异常.txt 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. 异常
  2. 异常就是程序出现了不正常的情况
  3. Java中的异常体系:
  4. Throwable Java中所有的异常和错误的父类
  5. / \
  6. Exception Error
  7. / \
  8. RuntimeException Exception
  9. Throwable Java中所有的异常和错误的父类
  10. |- Exception Java中所有异常的父类,也就是异常类,他表示程序本身可以处理的问题
  11. |-RuntimeException 运行时异常,程序代码不会报错,但是运行后会报错。
  12. |-除了RuntimeException类及其子类以外的其他异常,就是程序代码会直接报错,我们必须处理这些异常。
  13. |-Error Java中所有错误的父类,也就是错误类,他表示不是程序的问题,而是系统的问题。
  14. 如果Java中出现Error错误,那么大部分时间都不是代码的问题,而是系统或内存的问题。
  15. Java中的异常分为两大类:
  16. 编译期异常:都是Exception类的子类,必须要我们进行处理,否则程序会发生错误,无法通过编译。
  17. 运行时异常:都是RuntimeException类的子类,不需要我们处理,也可以和编译期异常一样进行处理。
  18. Java文件----编译期--》运行期
  19. Java程序想要执行,需要几步?
  20. 1、Java源代码文件--->编译(javac.exe)--->Java字节码文件
  21. Java字节码文件--->解释(java.exe)--->机器码(二进制数据)并且执行
  22. 我们之前遇到了异常,不做任何处理,都是交给Java虚拟机(JVM)进行处理。
  23. 默认的处理:把异常名称,错误原因,异常出现的位置等信息输出到控制台。并且停止程序继续运行。
  24. 我们要进行的异常处理方案:
  25. 两种方案:
  26. |-1、我们也不处理了,只是把异常告诉虚拟机,这段代码可能出现异常了(声明异常) throws
  27. |-2、我们进行处理,就比较麻烦了:
  28. 1、我需要先检测可能出现异常的代码块。 try
  29. 2、判断可能出现什么异常并且给出解决方案 catch
  30. 3、无论怎么解决,有些代码必须要执行。 finally
  31. 无论是否处理都会用到的,抛出异常对象 throw
  32. 我们可能会自定义一些符合我们业务的异常。
  33. 建一个类,名称后面为Exception,为了区分该类为异常类。
  34. 让该类继承Exception类或RuntimeException类。
  35. 万事万物皆为对象
  36. throws 用在方法的后面,throws 后面的跟着的是异常类名。表示该方法里面的代码可能会引发某个异常:
  37. public void method() throws AgeException{ //这个方法里面的代码可能引发AgeException异常。
  38. }
  39. 如果哪个方法调用了这个方法,那么就需要进行处理AgeException异常,否则也要使用throws继续声明。
  40. throw 用在方法体里面,后面跟着的是异常的对象名。表示手动抛出异常对象,需要方法体内部进行处理或者throws声明。
  41. 我们自己处理异常:
  42. 格式:
  43. try{
  44. //是可能出现异常的代码
  45. }catch(异常类型 变量名){
  46. //处理方案
  47. }finally{
  48. //一定会被执行的代码
  49. }
  50. 案例:
  51. 商品类里面包含3个属性:商品名称、商品价格、商品库存
  52. 模拟实现用户购买商品的功能,使用ArrayList模拟商品列表,
  53. 当购买的商品不存在或者商品库存为0时,抛出自定义异常。
  54. 用户购买某一个商品时,对异常进行处理,并对库存进行改变。
  55. 步骤:
  56. 1、创建商品类
  57. 2、创建自定义的异常类:
  58. NotProductException 没有这个商品异常
  59. InventoryException 商品库存不足异常
  60. 3、创建Main类
  61. 创建一个购买的方法
  62. public void shopping(Product p){
  63. }