Java自定义异常

简介:

  先看标准的例子:

Test.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
     模拟注册
*/
public  class  Test{
 
     public  static  void  main(String[] args){
         
         //假如用户提供的用户名如下
         String username =  "xpleaf" ;
         
         //注册
         CustomerService cs =  new  CustomerService();
         
         try {
             cs.register(username);
         } catch (IllegalNameException e){
             System.out.println(e.getMessage());
         }
         
         
     }
}

CustomerService.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//顾客相关的业务
public  class  CustomerService{
     
     //对外提供一个注册的方法
     public  void  register(String name)  throws  IllegalNameException{
         
         //完成注册
         if (name.length()< 6 ){
             
             //异常
             //创建异常对象
             //IllegalNameException e = new IllegalNameException("用户名长度不能少6位");
             
             //手动抛出异常
             //throw e;
             throw  new  IllegalNameException( "用户名长度不能少6位" );
         }
         
         //如果代码能执行到此处,证明用户名是合法的.
         System.out.println( "注册成功!" );
         
     }
     
}

IllegalNameException.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
     自定义“无效名字异常”.
         1.编译时异常,直接继承Exception
         2.运行时异常,直接继承RuntimeException
*/
public  class  IllegalNameException  extends  Exception{  //编译时异常
//public class IllegalNameException extends RuntimeException{ //运行时异常
     
     //定义异常一般提供两个构造方法
     public  IllegalNameException(){}
     
     
     public  IllegalNameException(String msg){
         super (msg);
     }
     
}

    其实比较简单,只要把相关的类创建好就OK了,最关键是在异常处理类中继承Exception。


    根据此,再写一个自定义异常,要求如果输入的数字大于100,则抛出异常:

Main_pro.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import  java.util.Scanner;
 
public  class  Main_pro {
 
     public  static  void  main(String[] args) {
         // TODO Auto-generated method stub
         
         System.out.println( "Please input a number for a:" );
         Scanner s =  new  Scanner(System.in);
         int  a = s.nextInt();
         
         Num_check check =  new  Num_check();
         try {
             check.checknum(a);
         }
         catch (NumError e){
             System.out.println(e.getMessage());
         }
     }
 
}

Num_check.java

1
2
3
4
5
6
7
8
9
public  class  Num_check {
     public  void  checknum( int  num)  throws  NumError{
         
         if  (num>= 100 ){
             throw  new  NumError( "Error!" );
         }
         System.out.println( "The number is normal." );
     }
}

NumError.java

1
2
3
4
5
6
7
public  class  NumError  extends  Exception{
     public  NumError(){}
     
     public  NumError(String msg){
         super (msg);
     }
}


    通过上面两个例子,再对比Python中的异常处理,最大的感想是:Python的真的要简洁好多!当然,这是因为在Java中,每一个方法都要写成一个类,而在Python中,不一定要使用面向对象的程序设计思想,因此可以简洁很多。

相关文章
|
23天前
|
Java
让星星⭐月亮告诉你,自定义定时器和Java自带原生定时器
定时器是一种可以设置多个具有不同执行时间和间隔的任务的工具。本文介绍了定时器的基本概念、如何自定义实现一个定时器,以及Java原生定时器的使用方法,包括定义定时任务接口、实现任务、定义任务处理线程和使用Java的`Timer`与`TimerTask`类来管理和执行定时任务。
38 3
|
1天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
8 2
|
7天前
|
Java
如何在 Java 中处理“Broken Pipe”异常
在Java中处理“Broken Pipe”异常,通常发生在网络通信中,如Socket编程时。该异常表示写入操作的另一端已关闭连接。解决方法包括:检查网络连接、设置超时、使用try-catch捕获异常并进行重试或关闭资源。
|
10天前
|
存储 安全 Java
如何避免 Java 中的“ArrayStoreException”异常
在Java中,ArrayStoreException异常通常发生在尝试将不兼容的对象存储到泛型数组中时。为了避免这种异常,确保在操作数组时遵循以下几点:1. 使用泛型确保类型安全;2. 避免生类型(raw types)的使用;3. 在添加元素前进行类型检查。通过这些方法,可以有效防止 ArrayStoreException 的发生。
|
11天前
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
25 2
|
15天前
|
Java 索引
如何避免在 Java 中引发`StringIndexOutOfBoundsException`异常
在Java中,处理字符串时若访问了不存在的索引,会抛出`StringIndexOutOfBoundsException`异常。为避免此异常,应确保索引值在有效范围内,例如使用`length()`方法检查字符串长度,并确保索引值不小于0且不大于字符串长度减1。
|
16天前
|
安全 Java
如何在 Java 中创建自定义安全管理器
在Java中创建自定义安全管理器需要继承SecurityManager类并重写其方法,以实现特定的安全策略。通过设置系统安全属性来启用自定义安全管理器,从而控制应用程序的访问权限和安全行为。
|
16天前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
56 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
23天前
|
Java
让星星⭐月亮告诉你,Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]
本文深入解析了Java异常处理机制,重点介绍了`Throwable`类及其子类`Error`和`Exception`,并通过实例代码、流程图和表格详细解释了异常的分类、区别及处理方法,帮助读者掌握异常处理的关键技巧,提升程序的稳定性和健壮性。
40 1