Java第十章

1.1异常处理

//	异常:例如将0作为除数,或是超出了车刚许愿可控的环境因素:如用户的坏数据,打开一个不存在的文件,或是运行中的一些错误
//Java中如果某个方法抛出异常,既可以在当前方法中进行捕捉,然后处理异常,又可以将异常向上抛出,由方法调用者来处理

1.2异常捕捉

//Java语言异常捕捉由三部分组成:try、catch、finally
//try语句块存放的是可能发生异常的Java语句
//catch程序在try语句块之后,用来将激发被捕获的异常;
//finally语句块是异常处理结构的最后执行部分,无论try语句块中的代码如何退出,都将执行finally语句块
try{
     //程序块代码
 }
catch(Exceptiontype e){
   //对Exceptiontype的处理
}
catch(Exceptiontype e){
   //对Exceptiontype的处理
}
...
finally{
    //程序块
}

//使用try-catch语句块将可能出现的异常语句进行处理
package 拍;

import java.util.stream.StreamSupport;

public class Take {
	public static void main(String args[]){
    	try{      //try语句中包含的可能出现异常的程序代码块
        	String str="lili";
        	System.out.println(str+"年龄是:");
        	int age=Integer.parseInt("20L");   //数据类型转换
        	System.out.println(age);
    	}catch (Exception e){   //catch语句用来获取异常处理
        	e.printStackTrace();   //输出异常处理的性质

    	}
    	System.out.println("program over");  //输出信息
	}
}

//当try代码块中的语句发生异常后,程序就会转移到catch代码块中执行
//toString()函数:给出异常的类型与性质
//getMessage()函数:输出错误的性质
//printStackTrace()函数:指出异常的性质栈层次以及出现在程序中的位置

//完整的异常处理一定要包含finally语句块,无论程序中是否有异常,无论之间的try-catch是否顺利执行,都会执行finally语句块,但是以下几种情况不执行
//finally语句块中发生了异常
//在前面的代码中使用了System.exit()退出程序
//程序所在的线程死亡
//关闭cpu

//Java常见类型图

1.3自定义异常

除了Java内置类异常外,用户还可以自定义异常,步骤如下:
//创建自定义异常类
//在方法中通过throw关键字抛出异常对象
//如果在当前方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明哟啊抛出给方法调用者的异常

	public class MyException extends Exception {   //创建自定义异常,继承Exception类
	public MyException(String ErrorMessage){   //构造方法
    	super(ErrorMessage);   //父类构造方法(输出错误信息) 
	}
}

//如果参数小于0或是大于100,通过throw关键字抛出一个MyException异常对象,并在main()方法中捕捉

public class Tran {
//定义方法,抛出异常
static int avg(int number1,int number2)throws MyException{
    if (number1<0 || number2<0){
        throw new MyException("不可以使用负数");
    }
    if (number1>100 || number2>100){
        throw new MyException("数值太大了");
    }
    return (number1+number2)/2;
}
public static void main(String args[]){
    try {
        int result=avg(102,150);
        System.out.println(result);
    }catch (MyException e){
        System.out.println(e);  //输出异常信息
    }
}
}

1.4在方法中抛出异常

//某个方法发生异常时,不想在此方法中处理异常,可以使用关键字throws和throw在方法中抛出异常
//throws关键字通常被应用在方法声明中,用来指定方法可能抛出的异常,多个异常可以用逗号

//使用throws()关键字抛出异常
public class Shoot {
static void pop() throws NegativeArraySizeException{
    //定义方法并抛出NegativeArraySizeException异常
    int arr[]=new int[-3];
}
public static void main(String args[]){
    try {
        pop();
    }catch (NegativeArraySizeException e){
        System.out.println("pop()方法抛出的异常");
    }
}
}

//使用throw关键字抛出异常
//throw关键字通常用于方法体中的,并且抛出一个异常对象,程序执行到throw语句时立即停止,它后面的语句都不执行,通过throw抛出异常后,如果想要在上一次代码中获取并处理异常,则需要在抛出异常的方法中使用throws关键字在方法的声明中指明要抛出的异常,如果使用throw抛出异常,则必须使用try-catch语句块

public class MyException extends Exception {
String message;
public MyException(String ErrorMessage){
    message=ErrorMessage;
}
public String getMessage(){    //覆盖getMessage方法
    return message;
}
}

//使用throw关键字
public class Captor {
static int quotient(int x,int y) throws MyException{
    if (y<0){
        throw new MyException("除数不能是负数");
    }
    return x/y;
}
public static void main(String args[]){
    try {
        int result=quotient(3,-1);
    }catch (MyException e){
        System.out.println(e.getMessage()); //输出异常信息
    }catch (ArithmeticException e){
        System.out.println("除数不能为0");   //输出提示信息
    }catch (Exception e){
        System.out.println("程序发生了其它异常");  //输出提示信息
    }
}
}
//注意catch语句顺序不能颠倒

1.5运行时异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值