「这是我参与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.异常往往在高层处理(先了解!后面做项目会说!) 。