• 自已定义一个Java异常——子定义异常,和异常遇到的面试题。


    自定义异常

    当Java官方提供的异常不满足我们实际业务需求时候,可以选择自己定义异常

    自定义异常的步骤:

    1》编写一个异常类

    2》自定义检查异常需要继承Exception

    自定义运行时异常需要继承RuntimeException

    3>再异常类中去调用父类中带参的构造方法,

    传入异常信息字符串

    4》在方法里面需要使用自定义异常时,需要先创建异常对象,然后再通过throw关键字将异常对象进行抛出

    1. import java.util.Scanner;
    2. /*
    3. * 自定义异常
    4. */
    5. class UsernameLengthWrongException extends Exception{
    6. public UsernameLengthWrongException() {
    7. super("你的用户名太长或太短,应该在4到8个字符之间");
    8. }
    9. }
    10. class WrongSexInputException extends RuntimeException {
    11. public WrongSexInputException() {
    12. super("请输入性别,男/女");
    13. }
    14. }
    15. public class TestException03 {
    16. public static void main(String[] args) throws UsernameLengthWrongException {
    17. m1();
    18. }
    19. /*
    20. * 提示用户从控制台输入姓名
    21. * 当用户输入的姓名少于四个字符或者超过八个字符
    22. * 抛出自定义检查异常
    23. */
    24. public static void m1() throws UsernameLengthWrongException {
    25. System.out.println("请输入你的用户名");
    26. String username= new Scanner(System.in).nextLine();
    27. if(username.length()<4||username.length()>8) {
    28. //创建自定义检查异常
    29. UsernameLengthWrongException ex=
    30. new UsernameLengthWrongException();
    31. //手动抛出检查异常,整个函数都到此结束了
    32. //相当于这一行代码发生了一个检查异常
    33. throw ex;
    34. //后面不能再写其他代码了
    35. //System.out.println("oiuhgvdekfoiuh");
    36. }
    37. System.out.println("1234567890");
    38. }
    39. /**
    40. * 提示用户从控制台输入性别
    41. * 如果性别不是男和女
    42. * 就抛出一个自定义的运行时异常
    43. */
    44. public static void m2() {
    45. System.out.println("请输入性别");
    46. String sex= new Scanner(System.in).nextLine();
    47. if(!(sex.equals("男")||sex.equals("女"))) {
    48. //创建一个自定义的运行时异常
    49. WrongSexInputException e=new WrongSexInputException();
    50. //抛出异常,整个函数结束
    51. throw e;
    52. }
    53. System.out.println("恭喜你,你性别正常");
    54. }
    55. }

    异常相关面试题

    1.finally、final、fianlize三个之间有什么区别?

    final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、

    修饰变量表示该变量是一个常量不能被重新赋值。

    finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法

    finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

    finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,Java 中允许使用

    finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

    2,try或catch中有return,finally中代码还会不会执行?

    会执行,在 return 前执行。

    注意:在 finally 中改变返回值的做法是不好的,因为如果存在 finally 代码块,try中的 return 语

    句不会立马返回调用者,而是记录下返回值待 finally 代码块执行完毕之后再向调用者返回其值,

    然后如果在 finally 中修改了返回值,就会返回修改后的值。

    3,throw和throws有什么区别?

    throw 关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中的异常,受查异常

    和非受查异常都可以被抛出。

    throws 关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表。一个

    方法用 throws 标识了可能抛出的异常列表,调用该方法的方法中必须包含可处理异常的代码,否

    则也要在方法签名中用 throws 关键字声明相应的异常。

    4.说出你项目中常见的五个运行时异常

    略(自己了解多少写多少,根据自身要求来看)

  • 相关阅读:
    Open3D(C++) 点云滤波
    这样在 C# 使用 LongRunnigTask 是错的
    ROS2——动作(十一)
    嵌入式实时操作系统的设计与开发(调度线程学习)
    基于文化算法优化的神经网络预测研究(Matlab代码实现)
    M拷贝表行数据
    Docker 自动化部署(保姆级教程)
    线性反馈移位寄存器的输出(未解出)
    计算机网络-网络文件共享协议
    计算机架构史上的一次伟大失败,多数人都不知道
  • 原文地址:https://blog.csdn.net/m0_72254454/article/details/126611427