Java 异常类try-catch语句

Java使用try-catch语句来处理异常,将可能出现的异常操作放在try部分,一旦try部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try部分就会立刻结束执行,转向执行相应的catch部分。

程序可以将发生异常后的处理放在catch部分,try-catch语句可以有多个catch部分,分别处理相应的异常;

try-catch语句的格式如下:

try {
    包含可能发生异常的语句
} catch (Exception e){
    .....
}catch (Exception e){
    .....
}finally{
.....
}

finally部分呢是不管前面的catch语句有没有执行,但是一定会执行finally语句部分;
try-catch语句可以搭配catch部分和finally部分一起使用,一个try-catch语句一定要包含一个或多个catch部分或者finally部分,不能单独出现try部分;

e.printStackTrace()方法介绍
try {
    包含可能发生异常的语句
} catch (Exception e){
    e.printStackTrace();
}
e.printStackTrace()方法可以打印出错误的堆栈信息,包括错误的描述,错误的类型以及错误出现的地方,举个例子:
import java.util.Scanner;

public class Demo1 {
    //输入两位整数,求商
	
	public static void main(String args[]) {
    int a,b;
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入两位整数:");
    try {
        System.out.println("请输入第1位整数:");
        int one = sc.nextInt();
        System.out.println("请输入第2位整数:");
        int two = sc.nextInt();
        System.out.println("两位之商为::"+(one/two)	);
	}catch(Exception e){
		e.printStackTrace();
	}
}
}

当我们输入6和的时候,程序正常执行,结果为3
当我们输入6和0的时候,大家都知道,在数学运算中被除数不能为,所以程序会报错,并打印出相关的错误信息,如下图所示
在这里插入图片描述

try-catch-finally语句的用法
还是上面那个例子,在上面的例子末尾加上finally语句,并且打印输出“运算结束”

import java.util.Scanner;

public class Demo1 {
    //输入两位整数,求商
	
	public static void main(String args[]) {
    int a,b;
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入两位整数:");
    try {
        System.out.println("请输入第1位整数:");
        int one = sc.nextInt();
        System.out.println("请输入第2位整数:");
        int two = sc.nextInt();
        System.out.println("两位之商为::"+(one/two)	);
	}catch(Exception e){
		e.printStackTrace();
	}finally {
	    System.out.println("运算结束");
	}
}
}

运行结果为:(不管有多少catch语句,finally语句是一定会被执行的)
在这里插入图片描述

当在catch语句中加入System.exit(1);时,如果程序有异常,跳转到执行catch方法,然后执行System.exit(1)语句时,程序会被终止,即不会打印出异常错误信息,也不会执行后面的finally语句,结果如下图。(括号里的1自己设定,不为0即可)

在这里插入图片描述
所以System.exit(1)语句的作用是终止程序运行;

throws
可以通过throws声明将要抛出何种类型的异常,通过throw将产生的异常抛出;
如果一个方法可能会出现异常,可以在方法声明处用throws子句来声明抛出异常;
throws语句用在方法定义时声明该方法要抛出的异常类型,如:

public void method() throes Exception1,Exception2,~~ExceptionN{
     //可能产生异常的代码
}

还是刚刚那个例子,这里面就没有try catch语句了,直接用throws抛出异常

import java.util.Scanner;

public class Demo1 {
    //输入两位整数,求商
	
	public static void main(String args[]) throws Exception{
    int a,b;
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入两位整数:");
        System.out.println("请输入第1位整数:");
        int one = sc.nextInt();
        System.out.println("请输入第2位整数:");
        int two = sc.nextInt();
        System.out.println("两位之商为::"+(one/two)	);
	    System.out.println("运算结束");
    }
}

在这里插入图片描述

通过throws在方法声明处抛出异常,亦可以继续往上抛出,此时可以抛出与throw对象相同的类型或其父类

自定义异常
所谓的自定义异常,就是定义一个类,去继承throwable类或者它的子类
先定义一个HotelAgeException类(自定义异常类)

public class HotelAgeException extends Exception {
    public HotelAgeException() {
    	System.out.println("未成年禁止单独入住酒店");
    }
}

然后在写主方法中去调用这个自定义异常类

import java.util.Scanner;

public class Demo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
    try {
		test();
	} catch (HotelAgeException e) {
		// TODO Auto-generated catch block
    	      //这里就会去调用HotelAgeException类里面的东西了
	}
		
		
        }
	public static void test() throws HotelAgeException {
		System.out.println("请输入年龄:  ");
		Scanner sc = new Scanner(System.in);
		int age = sc.nextInt();
		if(age<18) {
			throw new HotelAgeException();   //自定义异常类
		}else {
			System.out.println("欢迎入住本酒店");
		}
	}
	}

在这里插入图片描述

个人总结,仅供参考哦

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值