自定义异常

262 阅读2分钟

「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

在某些应用中,编程人员可以根据程序的需要 创建自己的异常类和异常对象,用来处理程序 中特定的逻辑运行错误或异常

自定义异常语法

class NewException extends OldException
{
......
}

自定义异常举例

三角形边长为负值异常
class TriangleMinusLengthException extends Exception
{
	String name;
	public TriangleMinusLengthException(String str)
	{ 
	name = str;
	}
	public String toString()
	{
	 return name;
	 }
} 
不满足三角不等式异常
class TriangleUnequationException extends Exception
{
	String name;
	public TriangleUnequationException (String str)
	{
	name = str;
	}
	public String toString()
	{
	 return name;
	 }
} 

自定义异常:

java提供的异常类,不够我们使用,需要自己定义一些异常类

格式:

   public class XXException extends Exception|RuntimeException{
      添加一个空参数的构造方法

      添加一个带异常信息的构造方法

}

注意:

   1.自定义异常类一般是以Exception结尾,说明该类是一个异常类

    2.自定义异常类,必须继承Exception或者RuntimeException

          继承Exception:那么自定义的异常类就是一个编译期异常,如果出现了编译期异常就必须处理,要么throws ,要么try catch

          继承RuntimeException:那么自定义的异常就是一个运行期异常,无需处理,交给虚拟机处理,中断处理。

练习:我们模拟用户操作,如果已经存在该用户就提示错误,如果没有存在就提示成功了

分析:

1.使用数组保存已经注册过的用户名(数据库)

2.使用Scanner获取用户输入的注册的用户名(前端,页面)

3.定义一个方法,对用户输入的用户名进行判断

  遍历已经注册的用户名数组,获取每一个用户名

  使用获取到的用户名和用户输入的用户名比较

  true:

       用户名已经存在,抛出RegisterException异常,告知用户“亲,该用户名已经被注册”

 false:

       继续遍历数组

  如果循环结束了,还没有找到重复的用户名,提示用户“恭喜您,注册成功!”

自定义MyException类

扩展Exception接口,可以自定义输出的语句

使用异常机制的建议:

1.要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下。

2.处理异常不可以代替简单测试---只在异常情况下使用异常机制。

3.不要进行小力度的异常处理---应该将整个任务包装在一个try语句块中。

4.异常往往在高层处理(先了解!后面做项目会说!) 。