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过程中,可以实时下断点

行断点

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

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

方法断点

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

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

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

字段断点

断点打在字段所在的行

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

条件断点

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

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

异常断点

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

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

相关推荐
007php0071 小时前
PHP与Java项目在服务器上的对接准备与过程
java·服务器·开发语言·分布式·面试·职场和发展·php
sheji34161 小时前
【开题答辩全过程】以 民宿预订管理系统的设计与实现为例,包含答辩的问题和答案
java
Evand J2 小时前
【MATLAB程序,一维非线性EKF与RTS】MATLAB,用于一维的位移与速度滤波和RTS平滑/高精度定位,带滤波前后的误差对比
开发语言·matlab·卡尔曼滤波·rts平滑·正向滤波
刘大猫.2 小时前
XNMS项目-拓扑图展示
java·人工智能·算法·拓扑·拓扑图·节点树·xnms
火云洞红孩儿7 小时前
告别界面孤岛:PyMe如何用一站式流程重塑Python GUI开发?
开发语言·python
正在努力Coding7 小时前
SpringAI - 工具调用
java·spring·ai
叫我辉哥e17 小时前
新手进阶Python:办公看板集成ERP跨系统同步+自动备份+AI异常复盘
开发语言·人工智能·python
晚风吹长发7 小时前
初步了解Linux中的命名管道及简单应用和简单日志
linux·运维·服务器·开发语言·数据结构·c++·算法
C++ 老炮儿的技术栈8 小时前
不调用C++/C的字符串库函数,编写函数strcpy
c语言·开发语言·c++·windows·git·postman·visual studio
我尽力学8 小时前
面试 总结
java·spring boot·面试