黑马程序员——面对对象(异常)

------- android培训java培训、期待与您交流! ----------

异常

定义:阻止当前方法或作用域继续执行的问题。是对问题的封装。将问题进行对象封装。
异常机制:

-

异常体系的特点:异常体系中的所有类都具备可抛性。(就是可以被throw和throws关键字所处理)只有异常体系具备这个特点。


throw和throws的用法:

   throw定义在函数内,用于 抛出异常对象。

   thorws定义在函数上 ,用于抛出异常类,可以抛出多个。

 当函数类容有throw抛出异常对象,并未进行try处理,就必须在函数上用throws关键字进行申明。(RuntimeException除外)

 如果申明了异常,调用者需进行处理。处理方式可以抛出,也可以用try处理。


异常有两种:

  编译时被检查异常(如果该异常没有处理,编译会失败)

       该异常被标识,代表可以处理。

  运行时异常(编译时不检测)

      在编译时不需要处理,编译器不检查。该异常发生,建议不处理,,让程序停止;需要进行代码修正。


异常处理的语句:

try {

      需要被检测的代码

} catch () {

        处理异常的代码

}final{

一定会执行的代码

}

有三种结合方式:

1、try{

      catch(){

      }

2、try{

      catch(){

      }finally{

      }

3、try{

      }finally{

      }

一般在finally中定义关闭资源代码。(当执行到System.exit(0)时finally不会被执行)


自定义异常:

     自定义类继承Exception或者RuntimeException

          1、让自定义类可抛。

           2、让该类具备操作异常的共性方法。

  当要定义自定义异常信息时,可以使用 父类已经定义好的功能,将异常信息传递给父类。

public class MyException extends Exception {
	public MyException(String message) {
		super(message);
	}

}
自定义异常:按照java的面向对象思想,将程序中德特有问题进行封装


异常的额好处:

   1、将问题进行封装。

   2、将正常流程代码和问题处理代码相分离(便于阅读)


异常定义的原则:

    1、处理异常的方式有两种: try或者throws。

    2、调用到异常功能时,抛出几个,处理几个;一个try对应一个catch

    3、多个catch时,弗雷父类的catch放在下面。

    4、catch内需要定义针对性的处理方式,不要简单的打印。也不要不写。

    5、当捕获到异常本功能处理不了时,可以继续在catch中抛出;如果该异常处理不了但并不属于该功能的异常。

          可以将异常转换后,再抛出和该功能相关的异常。

异常注意事项:

   在子父类覆盖时

     1、子类抛出的异常必须是父类异常的子类或者子集。

      2、如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能处理,不能抛出。

示例:

public static void testException1() {
        int[] ints = new int[] { 1, 2, 3, 4 };
        try {
            System.out.println(ints[4]);  //捕捉到异常
        } catch (IndexOutOfBoundsException e) {
           //处理异常的代码
        }finally{
        	//一定会执行的代码(除非虚拟机停止)
        }
    }


示例:运行时异常

//自定义异常类
public class NoValueException extends RuntimeException{
	public NoValueException(String message) {
		super(message);
	}
}
public interface Shape {
    void getArea();
}
public class Rec implements Shape {
	private int len = 0, wid = 0;
	public Rec(int len, int wid){
		if (len <= 0 || wid <= 0)
			throw new NoValueException("出现非法值"); //抛出运行时异常
		this.len = len;
		this.wid = wid;
	}
	public void getArea() {
		System.out.println("面积是:"+len*wid);

	}

}
public class Circle implements Shape {
	private int r;
	public static final double PI = 3.14;
	public Circle(int r) {
		if(r<=0)
			throw new NoValueException("非法元半径");//抛出运行时异常
		this.r = r;
	}
	public void getArea() {
		System.err.println("圆面积是" + r * r * PI);
	}
}
//测试类
public class Test {
	public static void main(String[] args) {
		Rec rec = new Rec(3, 4); //传入正确的值计算面积,传入错误的值虚拟机停止
		rec.getArea();

		Circle circle = new Circle(1);  //传入正确的值计算面积,传入错误的值虚拟机停止
		circle.getArea();
	}

}




------ android培训java培训、期待与您交流! ----------

黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值