异常的体系结构

Throwable 是java语言中所有错误或异常的超类

错误--Error 普通类,是一个大问题

        一般是语法格式写错了,类找不到了,或者内存溢出等,会产生Error

异常--Exception 普通类,相对是一个小问题

        一般是逻辑有问题会产生该异常

                        --非RuntimeException (编译时期异常)

                                其中之一是 ParseException ...

                        --RuntimeException (运行时期异常)

                                --ClassCastException 向下转型时报的异常

                                --NullPointerException 空转异常

                                --IndexOutOfBoundsException

                                        --ArrayIndexOutOfBoundsException 数组索引异常

                                        --StringIndexOutOfBoundsException 字符串索引异常

如何处理异常?

        针对编译时期异常(非 RuntimeException ) 的处理

      1.  捕获 :

try{

     出现红线的代码                   

 } catch(异常类名 对象名(变量名)){

    //可以写Exception

    处理方案

} finally {

    释放资源代码

}

点 try/catch     就会自动生成

	    import java.text.ParseException;
		import java.text.SimpleDateFormat;
		import java.util.Date;
			
			public static void main(String[] args) {
				try {
					String s = "2022/04/20";
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
					Date date = sdf.parse(s);
					System.out.println(date);
				} catch(ParseException a) {//可以写Exception
					System.out.println("打球吗");
					}
				System.out.println("不去");
			}

2.主动刨
            格式;thorw 异常对象
            写在上面位置;写在方法中

public static void main(String[] args) throws Exception {
					Person p = new Person();
					p.eat("大白菜");	
					//p.eat("澳洲肥牛肉");
			}
				
		class Person{
			public void eat(String food) throws Exception{
					if(food.endsWith("肉")) {
						System.out.println("我喜欢吃" + food);
					} else {
						//主动抛异常
						//Exception a = new Exception();
						//throws e
						throw new Exception("我只喜欢吃肉");
					}
				}
		}

输出我喜欢吃澳洲肥牛肉            
        编译异常需要抛,运行异常不用

3.被动刨:
            点 add thorws declaratin
                
            格式;thorws 异常类名
            写在方法的声明上
            在子父类中,如果父亲没有抛,子类重写方法也不能抛。
            而且就算父亲抛异常了,子类抛的异常的类只能是父亲异常的子类或者本身·    

public static void main(String[] args) throws ParseException {
				String s = "2022/04/20";
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
				Date date = sdf.parse(s);

4.自定义异常

            //自定义异常类
			public class Myexception extends Exception{
					
			public Myexception() {}
					
			public Myexception(String message) {
					super(message);
				}
			}	

			public class Myexception extends Exception{
				public class Demo04 {
					//使用自定义异常类
					public static void main(String[] args) throws Myexception {
						Person p = new Person();
						p.eat("大白菜");	//使用自定义异常类
						//p.eat("澳洲肥牛肉");
					}
				}
class Person{
		//使用自定义异常类
		public void eat(String food) throws Myexception {
			if(food.endsWith("肉")) {
				System.out.println("我喜欢吃" + food);
			} else {
				//主动抛异常
				//Exception a = new Exception();
				//throws e
				//throw new RuntimeException("我只喜欢吃肉");
				//使用自定义异常类
				throw new Myexception("我只喜欢吃肉");
			}
		}
	}	

输出Exception in thread "main" Exception.Myexception: 我只喜欢吃肉
自定义异常类要是 RuntimeException类型的 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值