java异常处理涉及到程序流程的跳转,所以,虚拟机要保存程序的执行流程,以便异常发生时能正确的跳转,这也就导致了使用异常时会导致额外的开销, 要谨慎使用异常。
使用异常有如下几个原则:
1.尽量避免使用异常,将异常情况提前检测出来。
2.不要为每个可能出现异常的语句都设置try和catch
3.避免在方法中抛出(throw)活捕获(catch)运行时异常RuntimeException和Error。
4.避免总是catch Exception 或Throwable,而要catch具体的异常类。这样可以使程序更加清晰。
5.不要压制、隐瞒异常。将不能处理的异常往外抛,而不是捕获之后随便处理。
6.不要砸循环中使用try、catch,尽量将try、catch放在循环外或者避免使用。
运行时异常有:
java.lang
类 RuntimeException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
所有已实现的接口:
Serializable
直接已知子类:
AnnotationTypeMismatchException, ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, EnumConstantNotPresentException, EventException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IncompleteAnnotationException, IndexOutOfBoundsException, JMRuntimeException, LSException, MalformedParameterizedTypeException, MirroredTypeException, MirroredTypesException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NoSuchMechanismException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, RejectedExecutionException, SecurityException, SystemException, TypeConstraintException, TypeNotPresentException, UndeclaredThrowableException, UnknownAnnotationValueException, UnknownElementException, UnknownTypeException, UnmodifiableSetException, UnsupportedOperationException, WebServiceException