什么是异常?
异常是程序运行过程中所遇到的错误或者不正常的情况,可能会导致程序终止或者出错。在Java中所有的异常都继承自一个throwable的类,它有error和exception两个子类,而且分为编译错误和运行时错误。
为什么需要异常处理?
出现异常后,导致程序后的代码都无法执行。从而造成程序的终止。 我们应该处理该异常,让程序能够运行下面得到代码。
java中异常处理的方式
第一种: try{ 可能发生异常的代码}catch(异常类 对象){捕获异常}
第二种: throws 抛出异常
try{}catch()
public class Test {
public static void main(String[] args) {
System.out.println("===============计算开始==================");
try {
int a = 10;
int b = 0;
int c = a / b;
System.out.println("==============计算的结果:=========" + c);
}catch(ArithmeticException e){
System.out.println("捕获了算术异常.");
}
System.out.println("------------------程序结束---------------");
}
}
try--catch捕获的原理
多个catch
public class Test {
public static void main(String[] args) {
System.out.println("===============计算开始==================");
Scanner sc=new Scanner(System.in);
try {
System.out.println("输入一个数:");
int a=sc.nextInt();
System.out.println("输入另一个数:");
int b=sc.nextInt(); //产生一个InputMismatchException异常对象
int c = a / b;
System.out.println("==============计算的结果:=========" + c);
}catch(ArithmeticException e){
System.out.println("捕获了算术异常.");
}catch(InputMismatchException e){
System.out.println("捕获输入异常");
}
System.out.println("------------------程序结束---------------");
}
}
如果发生的异常种类比较多,那么就会造成写很多的catch. 如何解决这个问题?---多态解决。
找到所有异常类的父类:Throwable
package demo04;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("===============计算开始==================");
Scanner sc=new Scanner(System.in);
try {
System.out.println("输入一个数:");
int a=sc.nextInt();
System.out.println("输入另一个数:");
int b=sc.nextInt(); //产生一个InputMismatchException异常对象
int c = a / b;
System.out.println("==============计算的结果:=========" + c);
}catch(Exception e){
System.out.println("捕获所有的异常.");
}
System.out.println("------------------程序结束---------------");
}
}
注意: 如果写了多个catch.大范围的异常catch必须写在小范围异常catch的下方。
package demo04;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("===============计算开始==================");
Scanner sc=new Scanner(System.in);
try {
System.out.println("输入一个数:");
int a=sc.nextInt();
System.out.println("输入另一个数:");
int b=sc.nextInt(); //产生一个InputMismatchException异常对象
int c = a / b;
System.out.println("==============计算的结果:=========" + c);
}catch (ArithmeticException e){
System.out.println("捕获算术异常");
}
catch(Exception e){
System.out.println("捕获所有的异常.");
}
System.out.println("------------------程序结束---------------");
}
}
Exception类中常用的方法
1. getMessage() :获取异常的信息。
2. toString(): 获取异常信息以及异常类型。
3. printStackTrace() :打印异常信息以及异常类型以及异常发生在哪一行。
finally
finally它可以和try catch 配合,也可以单独与try配合。 有没有异常都会被执行的代码。---主要使用在资源得到释放。
package demo04;
import demo03.Animal;
public class Test02 {
public static void main(String[] args) {
show(10,0);
}
public static int show(int a,int b)
{
try {
int c=a/b; //ArithmeticException f=new ArithmeticException();
return c; //return用来结束方法。
} catch (Exception e) {//Exception e=f;
System.out.println("异常捕获");
}finally {
System.out.println("释放资源"); //IO资源 JDBC资源 连接池资源
}
return 0;
}
}
throws 处理异常
抛出异常。抛给调用者。写在方法的后面
public class Test {
public static void main(String[] args) throws ArithmeticException {
show(10,0); //调用者可以处理该异常对象。 也可以继续抛出. jvm
System.out.println("~~~~~~~~~~~~~~~~~~~");
}
public static void show(int a,int b)throws ArithmeticException{
int c=a/b;
}
}
两种异常类型:
Exception异常: 编译异常
RuntimeException异常: 运行时异常
throw关键字
我们上面产生的异常对象,都是系统自动生成的。我们也可以通过throw这个关键字,人为创建一个异常对象。
语法: throw new 异常类型("异常的信息");
自定义异常类
jdk自带了很多异常类型。我们为了更好的知道异常类型。我们可以自己定义异常类。根据不同的异常名称,判断异常的错误。
public class 异常类名 extends RuntimeException{
public 异常类名(String msg){
super(msg);
}
}
一些常见的异常问题:
1.什么是异常?简述Java的异常处理机制。
异常是程序运行过程中所遇到的错误或者不正常的情况,可能会导致程序终止或者出错。在Java中所有的异常都继承自一个throwable的类,它有error和exception两个子类,而且分为编译错误和运行时错误。
Java的异常处理机制,提供了try-catch和finally块来处理异常。
2.在Java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用?try-catch-finally语句如何使用?
try块:放置可能抛出异常的代码。
catch块:捕获并处理在try中抛出的异常,可有多个catch块来处理不同类型的异常。
finally块:无论是否发出异常,该块内的代码块都会执行,通常用于清理资源
3.谈谈final、finally的区别和作用
final:是一个修饰符,用于变量,方法和类,表示不可修改的常量,不可重写和不可继承。
finally:是一个关键字,用于异常处理结构中的代码块,确保特定代码在异常发生与否都会执行。
4.如果try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行?
finally块中的代码始终会被执行,无论try块中是否有return,throw或者抛出异常。
5.Error和Exception有什么区别?
Error通常是指程序无法处理的情况,基本上不应在应用程序中捕获。
Exception是程序可以处理的情况,通过捕获和适当的错误处理,可以使程序继续运行。
6.什么是RuntimeException?列举至少4个RuntimeException的子类
RuntimeException是指程序运行时错误
算术异常
数组索引越界
空指针
输入异常
标签:java,处理,System,catch,int,println,异常,out From: https://blog.csdn.net/nie6668888/article/details/143952097