Java快速入门 知识精简(6)异常处理

异常处理

异常 :指的是程序在执行过程中。出现的非正常的情况,如果不处理最终会导致JVM的非正常停止。

为保证程序正常执行,代码必须对可能出现的异常进行处理

说明:

1)异常指的并不是语法错误;语法错了,编译不通过,不会产生字节码文件,根本不能运行。

2)异常也不是指逻辑代码错误,而没有得到想要的结果;例如:求a与b的和,你写成了a-b;

3)充分发挥异常的优点,可以提高程序的可读性 可靠性和可维护性

分类:按程度

1)Error:虚拟机也无法处理的严重错误

2)Exceptioin:一般性问题, 通常可以处理

异常组合:

md-end-block 复制代码
try{
    // 可能会抛出异常的代码;
}catch(Exception a){
    throw new Exception(a);     // throw 抛出异常
}
​
 
​
try{
    // 可能会抛出异常的代码;
}catch( ){
    System.out.println("这里有一个异常!");
}finally{
    // 最后一定会执行的代码;
}
​
 
​
try{
    // 可能会抛出异常的代码;
}finally{
    // 最后一定会执行的代码;
}
md-end-block 复制代码
// throws 将异常抛出; 不在方法中处理异常,将异常处理的责任传递给方法的调用者
​
public void myMethod() throws Exception {
    // ...
    if (someCondition) {
        throw new Exception("An error occurred");
    }
    // ...
}
​

JUnit单元测试

对一部分代码进行测试检查,确保代码的正确性

步骤:

①选中当前工程 -> 右键 -> build path - add libraries - JUnit 4 - 下一步。

②创建Java类,进行单元测试。

Java类要求:此类是public 类,此类公共的无参构造器。

③此类中声明单元测试方法

单元测试方法:方法的权限是public,没有返回值,没有形参。

④此单元测试方法上需要声明注解:@Test 并在单元测试类中导入test包。

md-end-block 复制代码
// 例:
import org.junit.test;
​
public class JUnitTest{
​
    @Test
    public void testEquals( ){
        // 方法体
    }
}
import org.junit.test;
​
public class JUnitTest{
​
    @Test
    public void testEquals( ){
        // 方法体
    }
}

⑤声明好单元测试方法后,就可以在方法体内测试相关的代码。

⑥写完代码以后,左键双击单元测试方法名,右键:run as - JUnit Test

说明:

如果执行结果没有任何异常,绿色条形框

如果执行结果出现异常,红色条形框


断点调试

调试程序方式:

System.out.println();

Debug 调试

运行编写好的程序时,可能出现的几种情况:

情况1:没有任何bug,程序执行正确!如果出现如下的三种情况,都有必要使用debug

情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。

情况3:运行以后,得到了结果,但是结果不是我们想要的。

情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。比如:多线程情况下,处理线程安全问题

Debug的步骤

Debug(调试)程序步骤如下:

1)添加断点

  • 在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点;
  • 在相同位置再次单击即可取消断点。

2)启动调试

  • IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run --> Debug)、图标 "绿色臭虫" 等

3)单步执行

4)观察变量和执行流程,找到并解决问题

调试操作

IDEA断点调试

操作按钮 说明 作用 快捷键
Step into 跳入 进入当前行所调用的方法中 F7
Step over 跳过 执行完当前行的语句,进入下一行 F8
Step out 跳回 执行完当前行所在的方法,进入下一行 Shift + F8
evaluate expression 计算表达式 查询表达式(变量、方法) Alt + F8
Resume Program 恢复 进入下一个断点 F9
Run to Cursor 直接跳到光标处继续调试 Alt + F9
Force Step Into 跳入 可以进入一个核心类库方法 Alt +Shift + F7
View Breakpoints 查看 查看所有断点 Ctrl + Shift + F8
Mute Breakpoints 使得当前代码后面所有的断点失效, 执行到底
Stop 结束 结束调试 Ctrl + F2
  • 在Debug过程中,可以实时下断点

行断点

断点打在代码所在行的标记行位置。

执行到此行时,会停下来。

方法断点

断点打在方法开始所在的行,当进入方法时,断点可以被唤醒。

也可以设置在方法退出时,断点也被唤醒

在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法

字段断点

断点打在字段所在的行

在类的属性声明上打断点,默认对属性的修改操作进行监控

条件断点

断点打在条件语句所在的行

只有在指定的条件为真时才会触发暂停,可以用于调试只在特定条件下出现的问题。

异常断点

断点打在异常语句所在的行

对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。

相关推荐
Flittly14 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了14 小时前
Java 生成二维码解决方案
java·后端
人活一口气19 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP21 小时前
Vibe Coding -- 完整项目案例实操
java
荣码21 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing21 小时前
Google第三方授权登录
java·后端·程序员
明月光81821 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑1 天前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java