17.Java 异常处理

Java 异常处理-捕获异常

  • 认识异常
  • 处理异常
  • 常见异常
  • throws 关键字
  • throw 关键字
  • 自定义异常

认识异常

  1. 异常是导致程序中的运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必的损失。

异常格式:

1
2
3
4
5
6
7
try{
异常语句
}catch(Exception e){
捕获异常
}finally{
一定执行的代码
}

Demo01:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Exc{
int i = 10;
}

public class ExceptionDemo01{

public static void main(String[] args){
int a = 10;
int b = 0;
int temp = 0;
try{
int temp = a/b;
}catch(Exception e){
System.out.println(e);
}
System.out.println(temp);
}
}

常见异常

正确代码 Demo01:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Exc{
int a = 10;
int b = 10;
}

public class ExceptionDemo01{

public static void main(String[] args){
int temp = 0;
Exc e = null;
e = new Exc();
temp = e.a/e.b;
System.out.println(temp);
System.out.println("程序退出");
}
}

错误代码 Demo02:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Exc{
int a = 10;
int b = 0;
}

public class ExceptionDemo03{

public static void main(String[] args){
int temp = 0;
Exc e = null;
//e = new Exc();
System.out.println(temp);
try{
temp = e.a/e.b;
}catch(Exception e1){
System.out.println("空指针异常" + e1);
}catch(Exception e1){
System.out.println("算数异常" + e2);
}
System.out.println("程序退出");
}
}

错误代码 Demo03:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Exc{
int a = 10;
int b = 0;
}

public class ExceptionDemo03{

public static void main(String[] args){

int temp = 0;
Exc e = null;
//e = new Exc();
System.out.println(temp);
try{
temp = e.a/e.b;

}catch(Exception e1){
System.out.println("空指针异常" + e1);
}catch(Exception e1){
System.out.println("算数异常" + e2);
}finally{
System.out.println("程序退出");
}
}
}
  1. 数组越界异常:ArrayIndexOutOfBoundsException
  2. 数组格式化异常:NumberFormatException
  3. 算数异常:ArithmeticException
  4. 空指针异常:NullPointerException

throws 关键字

  1. 在定义一个方法的时候可以使用 throws 关键字声明,使用 throws 声明的方法表示此方法不处理异常,抛给方法的调用者处理

  2. 格式:

1
public void tell() throws Excepton{}

Demo02:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ExceptionDemo02{
public static void main(String[] args){
try{
tell(10,0);
}catch(Exception e){
System.out.println(e);
}
}
public static void tell(int i,int j) throws ArithmeticException{
int temp = 0;
temp = i/j;
System.out.println(temp);
}
}

Demo03:

1
2
3
4
5
6
7
8
9
10
public class ExceptionDemo03{
public static void main(String[] args)throws Exception{
tell(10,0);
}
public static void tell(int i,int j) throws ArithmeticException{
int temp = 0;
temp = i/j;
System.out.println(temp);
}
}

throw 关键字

  1. throw 关键字抛出一个异常,抛出的时候直接抛出异常的实例化对象即可
1
2
3
4
5
6
7
8
9
public class ExceptionDemo03{
public static void main(String[] args)throws Exception{
try{
throw new Exception("实例化异常对象");
}catch(Exception e){
System.out.println(e);
}
}
}

自定义异常

  1. 自定义异常直接继承 Exception 就可以完成自定义异常类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyException{
public MyException(String msg){
super(mas);
}
}
public class ExceptionDemo03{

public static void main(String[] args)throws Exception{
try{
throw new Exception("自定义异常");
}catch(MyException e){
System.out.println(e);
}
}
}

17.Java 异常处理
https://bubao.github.io/posts/ac0f0b96.html
作者
一念
发布于
2016年7月29日
许可协议