- 继承
Exception
类(或其子类)来创建自定义异常类- 在Java中,
NumberFormatException
本身是java.lang.RuntimeException
的子类。如果要自定义类似的异常,可以创建一个新的类,让它继承自Exception
或RuntimeException
。 - 示例:
class CustomNumberFormatException extends RuntimeException { public CustomNumberFormatException() { super(); } public CustomNumberFormatException(String message) { super(message); } }
- 在这个示例中,
CustomNumberFormatException
类继承自RuntimeException
。它有两个构造函数,一个是无参数的构造函数,它调用父类(RuntimeException
)的无参数构造函数;另一个是带有String
类型参数的构造函数,用于传递异常信息,它调用父类的构造函数并将消息传递上去。
- 在Java中,
- 抛出自定义异常
- 当满足特定条件(例如,在自定义的字符串转数字的方法中发现不符合要求的格式)时,可以抛出这个自定义异常。
- 示例:
class NumberConverter { public static int convert(String numberStr) { if (!numberStr.matches("\\d+")) { throw new CustomNumberFormatException("输入的字符串不是合法的整数格式"); } return Integer.parseInt(numberStr); } }
- 在这个
NumberConverter
类中,convert
方法用于将字符串转换为整数。如果输入的字符串不符合\\d+
(即只包含一个或多个数字)的格式,就会抛出CustomNumberFormatException
异常,并带有相应的错误消息。
- 捕获自定义异常
- 在使用可能抛出自定义异常的方法或代码块时,可以使用
try - catch
块来捕获并处理这个异常。 - 示例:
public class Main { public static void main(String[] args) { String numberStr = "abc"; try { int number = NumberConverter.convert(numberStr); System.out.println("转换后的整数: " + number); } catch (CustomNumberFormatException e) { System.out.println(e.getMessage()); } } }
- 在
main
方法中,尝试调用NumberConverter.convert
方法将字符串转换为整数。如果抛出CustomNumberFormatException
,则在catch
块中获取并打印异常消息。这样就完成了自定义异常从创建、抛出到捕获处理的整个过程。
- 在使用可能抛出自定义异常的方法或代码块时,可以使用