Java异常处理学习笔记

传统语言(比如C语言等)需要用if语句来判断是否出现例外。但在Java中:
+ throw异常
+ 运行时系统在调用栈中查找
+ 捕获(catch)异常代码

语句:

**抛出异常**:
```Java
throw 异常对象
```

**捕获异常**:

```Java
try{
    // fields;
}cache(异常类名 异常形式参数名){
    // 异常处理语句组
}...

{}finally{
    // 异常处理语句组
}
```

其中,`catch`可以0到多个语句;finally可有可无。

## 1. `Exception`类

**构造方法**:

```Java
// 方法一:无参数
public Exception();

// 方法二:带异常信息
public Exception(String message);

// 方法三:信息+原因
public Exception(String message, Throwable cause);
```

常用方法:
```Java
getMessage();
getCause();
printStackTrace();
```

## 2. 多异常处理

要求:子类异常要在父类异常之前

`finally`语句:无论有无异常都会执行!

## 3. 受检异常

在Java中,`Exception`分两种:
+ `RuntimeException`(运行时异常)及其子类,可以不明确处理;
+ 否则称为**受检异常**(checked Exception)。受检异常是要**明确处理**的,要么捕获,要么抛出。

受检异常处理方法:
+ `catch`
+ `throws`:在方法签名后面加`throws XXXX`声明

注:在子类中,如要覆盖父类的一个方法,若父类中的方法声明了`throws`异常,则子类的方法也可以`throws`异常。

## 4. 自定义异常类

定义方法:
+ 继承自Exception类或某个子Exception类
+ 定义属性和方法或重载父类的方法

重抛异常及异常链接的方法:
+ 将当前捕获的异常再次抛出:`throw e`
+ 重新生成一个异常并抛出:`throw new Exception("some message");`
+ 重新生成并抛出一个新异常,该异常包含了当前异常的信息,如:
    - `throw new Exception("some message", e);`
    - 可用`e.getCause()`来得到内部异常

## 5. 断言(assertion)

这是自JDK 1.4起增加的功能。

格式:
* `assert`
* `assert : info`

JUnit测试:如何在IntelliJ idea中用?

## 6. 程序调试

一般来说,程序中的错误通常可以分三大类:
* 语法错误(Syntex Error)
* 运行错误(Rumtime Error)
* 逻辑错误(Logic Error): `debug`或`unit test`

Debug: 用IDE就能做,idea做的挺好的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值