java 异常处理
异常处理是面向对象语言区别于面向过程语言的重要标志之一,异常的出现,可以使我们编写的程序变得强大并且安全。
(ps:面向过程的语言如C语言,就没有异常处理机制)
简单地说,异常时处理错误的机制。
1.1 用try-catch处理异常
try…catch是处理异常的两种方法之一,适合处理程序员可以控制和用户输入有误的情况,以起到程序开发顺利进行和避免不必要情况的发生。
import java.util.Scanner;
public class TestException {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
try{
int a=sc.nextInt();
int b=sc.nextInt();
int c=a%b;
System.out.println("余数是: "+c);
}catch(Exception e){
System.out.println("输入有误");
}
System.out.println("程序顺利进行中...");
}
}
/**
运行结果:
20
0
输入有误
程序顺利进行中...
*/
1.2 用throws处理异常
throws是处理异常的两种方法之一,它的处理方法是将异常抛给上一级处理,如都不能处理,最终抛给虚拟机处理,这个过程我们成为抛异常。这种方法适合比较严重的异常和程序员无法预料或者无法完全避免异常发生的情况,以及无法处理的异常。
//01.在主函数中捕捉
import java.util.Scanner;
public class TestThrows {
public static void main(String[] args){
A aa=new A();
try{
aa.a();
}catch(Exception e){
System.out.println("输入错误");
}
System.out.println("程序顺利进行中...");
}
}
class A{
public void a(){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=a%b;
System.out.println("余数是: "+c);
}
}
//02.主函数try catch时也不知道怎么处理,则抛给虚拟机
//抛给虚拟机起码可以保证用户的机器不会死机。让程序正常终止。
import java.util.Scanner;
public class TestThrows {
public static void main(String[] args)throws Exception{
A aa=new A();
aa.a();
System.out.println("输入错误");
System.out.println("程序顺利进行中...");
}
}
class A{
public void a()throws Exception{
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=a%b;
System.out.println("余数是: "+c);
}
}
1.3 finally语句
finally语句是起到异常处理出口的作用,用在try…catch语句的最后,无论是否出现异常(catch中的语句是否被执行),finally中的语句都会被执行,这样可以更好的控制程序的走向。
//03.finally语句无论如何都会执行
import java.util.Scanner;
public class TestThrows {
public static void main(String[] args){
A aa=new A();
try {
aa.a();
} catch (Exception e) {
System.out.println("输入错误");
}finally{
System.out.println("程序顺利进行中...");
}
}
}
class A{
public void a()throws Exception{
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=a%b;
System.out.println("余数是: "+c);
}
}