Throwable
是所有异常的父类。其常用方法如下:
java
public Throwable();
public Throwable(String message);
public String getMessage();//获取异常发生的原因
public void printStackTrace(); //打印异常在栈中的轨迹信息
第二节 异常处理
- 如何处理异常
在Java中,异常的种类很多,如果每一种异常类型我们都需要去记住,这无疑是一件很困难的事。如果
能够有一套机制来处理异常,那么将减少程序员在开发时的耗时。Java就提供了一套异常处理机制来出
来异常。Java处理异常使用了5个关键字:throw 、throws、try、catch、finally - throw 抛出异常
throw关键字只能在方法内部使用,throw关键字抛出异常表示自身并未对异常进行处理。
java
package com.cyx.exception;
import java.util.Scanner;
public class Example1 {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
calculate();
}
public static void calculate(){
System.out.println("请输入一个数字:");
int number1 = sc.nextInt();
System.out.println("请再输入一个数字:");
int number2 = sc.nextInt();
if(number2 == 0){
ArithmeticException e = new ArithmeticException("在除法运算中除数
不能为零");
throw e;
}
int result = number1 / number2;
System.out.println(result);//该行代码不能够被执行
}
}
```
注意到:当被除数为0,又无解决方案时,会往上级寻找解决方案,代码未给解决方案,程序退出(返回值为1);
3. throws 声明可能抛出的异常类型
throws关键字只能应用在方法或者构造方法的定义上对可能抛出的异常类型进行声明,自身不会对异常
做出处理,由方法的调用者来处理。如果方法的调用者未处理,则异常将持续向上一级调用者抛出,直
至main()方法为止,如果main()方法也未处理,那么程序可能因此终止
```java
package com.cyx.exception;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Example2 {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int result = devided();
System.out.println(result);
}
public static int devided() throws InputMismatchException,
ArithmeticException{
int number1 = getNumber();
int number2 = getNumber();
return number1 / number2;
}
/**
*
* @return
* @throws InputMismatchException 执行该方法时可能会抛出
InputMismatchException
*/
public static int getNumber() throws InputMismatchException {
System.out.println("请输入一个数字:");
int number = sc.nextInt();
return number;
}
}
- try-catch 捕获异常
throw 和 throws 关键字均没有对异常进行处理,这可能会导致程序终止。在这种情况下,可以使用trycatch结构来对抛出异常进行捕获处理,从而保证程序能够正常运行。
java
package com.cyx.exception;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Example2 {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int result = devided();
System.out.println(result);
}
public static int devided() throws InputMismatchException,
ArithmeticException{
int number1 = getNumber();
int number2 = getNumber();
return number1 / number2;
}
/**
*
* @return
* @throws InputMismatchException 执行该方法时可能会抛出
InputMismatchException
*/
public static int getNumber() throws InputMismatchException {
System.out.println("请输入一个数字:");
int number = sc.nextInt();
return number;
}
}