/**
* 自定义异常
*/
public class Test05 {
class IllegalAgeException extends Exception{
//非法年龄异常类 继承异常类
public IllegalAgeException(){
//无参构造器
public IllegalAgeException(String message){
//message中放异常的信息/描述
super(message);
//调用父类的有参构造器 构造器不能继承 不写时默认第一行super()调用无参构造器
class IllegalNameException extends Exception{
public IllegalNameException(){
public IllegalNameException(String message){
super(message);
class Adult{
String name;
int age;
public void setAge(int age){
if (age<19){
try {
throw new IllegalAgeException(\"年龄需满18周岁\");
//对数值进行限制 当这里抛出新的异常对象时 checked exception提示将这个异常进行try/catch处理或者Add exception to method signature 向方法签名添加异常
catch (IllegalAgeException e) {
//try尝试抛出 new IllegalAgeException catch这个new的exception用IllegalAgeException引用变量e指向 并且执行{抛出new运行时异常
throw new RuntimeException(e);
this.age = age;
public void setName(String str) throws IllegalNameException{
//对方法内的new异常 通过throws抛出
if (str==\"\"){
throw new IllegalNameException(\"需要输入有效字符\");
name = str;
public static void main(String[
args) {
Adult a = new Adult();
a.setAge(-1);
/*
Exception in thread \"main\" java.lang.RuntimeException: IllegalAgeException: 年龄需满18周岁
at Adult.setAge(Test05.java:27)
at Adult.main(Test05.java:35)
Caused by: IllegalAgeException: 年龄需满18周岁
at Adult.setAge(Test05.java:24)
... 1 more
Process finished with exit code 1
程序通过了编译 但在运行(Test05.java:35行)时throw异常 属于运行时异常 : 冒号后是异常的信息 在setAge()方法内抛出的IllegalAge异常已被catch处理 但(Test05.java:27行)new Runtime异常叫停了进程
throw new RuntimeException(e); 将IllegalAge异常对象e传参进 RuntimeException()构造方法中
new Runtime异常的原因Caused by IllegalAge异常: 异常的信息
在(Test05.java:24行) throw new IllegalAgeException(\"年龄需满18周岁\");
*/
try {
a.setName(\"\");
//checked exception提示处理非法命名异常
catch (IllegalNameException e) {
e.printStackTrace();
//打印栈跟踪信息
System.exit(-1);
//系统退出返回-1异常退出
/*
IllegalNameException: 需要输入有效字符
at Adult.setName(Test05.java:43)
at Adult.main(Test05.java:66)
Process finished with exit code -1
异常类:信息
(Test05.java:43) throw new IllegalNameException(\"需要输入有效字符\");
(Test05.java:66) a.setName(\"\");
这里的异常退出是手动在catch{语句块中添加的 没有这一项的话进程会在catch异常后继续往下运行至结束
*/
【CPU|java自定义异常】
- AMD|CPU大卖 AMD发布Q2财报:利润暴涨119%
- CPU|2399的真我Q5狂欢版对比2599的真我GTNeo3如何?
- CPU|3款两千价位大内存手机,均可闭眼入,最后一款亮了
- Java|「源码时代干货分享」转行IT需要哪些条件
- Java|再迎至暗时刻!腾讯跌回5年前,阿里跌回8年前,中概股集体大跌
- CPU处理器|尴尬了 西班牙愿给830亿元补贴也建不起5nm芯片厂
- CPU|内行人是怎样买手机的?4个技巧,盘点3款高性价比的千元机供选择
- Java|快速云:云计算原生Java必须提供的4个方面
- 4月14日|英特尔cpu-z2.01版发布,新增支持国产gpu和兆芯
- 联想官网公告4月19日|eset通报联想笔记本电脑安全漏洞:恶意代码植入主板cpu