Exception 除0异常 等等。对于Exception 可以使用针对性的处理方式进行处理,常见的还有多态的时候父类对象的引用转子类的时候,会报ClassCast异常,类转换异常。
但是Error是直接报错。 常见的 java haha 如果没有这个haha.class文件的话,运行不起来会报这个错,NoClassDefFoundError, 还有常见的error 内存溢出,很简单。定义一个数组,然后 long[] arr = new long[100000000]直接就内存溢出了。
![fdc1a8374ebbbb6c0951a2f09b3c26bb.png](https://i-blog.csdnimg.cn/blog_migrate/2a0ab512c59521b413ca1238531d41ef.jpeg)
![d6e329c7f3f3dcf341f220f819e703c2.png](https://i-blog.csdnimg.cn/blog_migrate/5e294283bb7e47ae9bbd793b3e6fcfc9.png)
![e6eb45eb5758539c048913596c34ab3d.png](https://i-blog.csdnimg.cn/blog_migrate/2832b05cd6313a32ab85a01f2ddc3eeb.jpeg)
![46d17baa060469aada485d07c581b469.png](https://i-blog.csdnimg.cn/blog_migrate/dcced5f1683277753f31e73d9b95afab.jpeg)
这样做不对,调用方法的时候,调用者知道你这方法里面会有错误吗?不知道,那调用者是try-catch还是不做try-catch呢? 所以方法定义的时候想到程序中可能会有异常,应该在方法上直接抛出异常(throws Exception),然后让调用者去try-catch.
一旦方法上throws Exception了 ,调用着A就必须进行try-catch处理,否则编译失败,如果再ide里就直接报红线了。还有一种情况就是调用者A也不处理,继续抛出去。谁调用A,谁去处理。简称甩锅。。如果再主函数里throws 的话 ,主函数是jvm调用的,那么就直接抛给虚拟机了,虚拟机也不知道怎么处理,然后就打印出来异常了。。。报错