Java中的异常

Java中的异常

概念

代码正常的执行流程中发生意外,必须处理

代码传入的参数不合适,导致一些问题
* 异常后面想要执行的代码,执行不到了,需要处理异常之后,代码能够继续往下走
* 常见异常:
* 1.除数不能为零java.lang.ArithmeticException:类
* 2.java.lang.NullPointerException
* 3.java.lang.StringIndexOutOfBoundsException
* 4.java.lang.ArrayIndexOutOfBoundsException
* 5.类型转换异常java.lang.ClassCastException
* 运行时…异常:编译完成,运行的时候才抛出的异常…运行
* 6.编译时异常java.text.ParseException
异常信息的获得而方式

1.直接打印异常对象
2.通过异常对象,调用getMessage()方法获得
3.通过异常对象,调用printStackTrace 打印异常信息
try{
System.out.println(1/0);
}catch(Exception e){
System.out.println(e);
String message = e.getMessage();
System.out.println(message);/// by zero
e.printStackTrace();
}
异常处理

方式1:try-catch *

  • try{
    • //放的可能发生异常的代码块:发生异常…搞一个对应异常类型的对象
    • }catch(异常类型 形式参数){
    • }catch(ParseException e){
    •  //来到这个语句块,写功能代码
      
    • }catch(){
    • }catch(){//—异常链
    • }finally{
    • //结构一定会执行的语句块:一般用来释放锁,关闭流资源
    • }
    • 1.try语句块,执行代码
    • 2.发生异常:根据类型,匹配对应的catch语句块…进入语句块。
    • 3.finally语句块,一定要执行
    • 3.try-catch执行完毕,继续往下走
      finally

finally语句块的测试

1.finally:try-catch一定会执行的语句块:一般用来释放锁,关闭流资源2.return已经结束方法了,但是finally还是执行了,所以finally一定会执行

3.finally一定会执行的前提,虚拟机不能关闭

4.finally中建议不要写return语句…不好理解!

static int test1(){
int i=10;
try {
System.out.println(1/1);
return i;
} catch (Exception e) {
i = 20;
System.out.println(“i”+e);
return i;//return 结束方法了
}finally{
i= 30;
//return i;
}
}
方式2:抛出

1.方法头:throws关键字,抛出异常类型[根据实际情况…后面的代码不需要执行…不管抛出…]
2.异常抛出,可以在方法头,抛出多个异常的
3.直接抛出一个大的异常Exception: 数据类型的兼容
主动抛出异常:

static String[] str={"a","k","s","dk","a","1","2"};
static void test(String s){
	for (int i = 0; i < str.length; i++) {
		if (s.equals(str[i])) {
			throw new NullPointerException("该字符已存在");
		}
	}
	System.out.println("可以输入");
}

自定义异常类型

1.写的代码,问题:账户已经存在的这种异常现象:对应的异常类型取描述…用NullPointerException不符异常类型

2.java 可以写很多的异常,可能写完所有的异常么?

3.自己定义异常类型,表达,自己实际开发中的意外情况

4.异常:继承体系的,异常都有异常信息…【直接在父类搞一个字段…存信息…父类提供对应的方法处理打印异常新…】

public class UserNullException extends Exception{

UserNullException(String s){
	super(s);
}

}

static String[] str={“a”,“k”,“s”,“dk”,“a”,“1”,“2”};
static void test(String s)throws UserNullException {
for (int i = 0; i < str.length; i++) {
if (s.equals(str[i])) {
throw new UserNullException(“该字符已存在”);//自定义类UserNullException继承Exception
}
}
System.out.println(“可以输入”);
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值