java异常处理及自定义异常的使用

 1. 异常介绍

 异常机制可以提高程序的健壮性和容错性。

  Throwable:Throwable是java语言所有错误或异常的超类。 有两个子类Error和Exception。


 1.1 编译期异常

  编译期异常必须处理,否则编译无法通过。 

AclNotFoundException, ActivationException, AlreadyBoundException, ApplicationException, AWTException, BackingStoreException, BadAttributeValueExpException, BadBinaryOpValueExpException, BadLocationException, BadStringOperationException, BrokenBarrierException, CertificateException, ClassNotFoundException, CloneNotSupportedException, DataFormatException, DatatypeConfigurationException, DestroyFailedException, ExecutionException, ExpandVetoException, FontFormatException, GeneralSecurityException, GSSException, IllegalAccessException, IllegalClassFormatException, InstantiationException, InterruptedException, IntrospectionException, InvalidApplicationException, InvalidMidiDataException, InvalidPreferencesFormatException, InvalidTargetObjectTypeException, InvocationTargetException, IOException, JAXBException, JMException, KeySelectorException, LastOwnerException, LineUnavailableException, MarshalException, MidiUnavailableException, MimeTypeParseException, MimeTypeParseException, NamingException, NoninvertibleTransformException, NoSuchFieldException, NoSuchMethodException, NotBoundException, NotOwnerException, ParseException, ParserConfigurationException, PrinterException, PrintException, PrivilegedActionException, PropertyVetoException, RefreshFailedException, RemarshalException, SAXException, ScriptException, ServerNotActiveException, SOAPException, SQLException, TimeoutException, TooManyListenersException, TransformerException, TransformException, UnmodifiableClassException, UnsupportedAudioFileException, UnsupportedCallbackException, UnsupportedFlavorException, UnsupportedLookAndFeelException, URIReferenceException, URISyntaxException, UserException, XAException, XMLParseException, XMLSignatureException, XMLStreamException, XPathException 

 1.2 运行期异常(RuntimeException

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

   NullPointerException、IndexOutOfBoundsException都是比较常见的运行期异常。

  举例:

   public static void main(String[] args) {

        int[] array = new int[10];
        array = null;
        System.out.println(array.length);
    }
Exception in thread "main" java.lang.NullPointerException
	at lang.Object.ExceptionTest.main(ExceptionTest.java:18)

 关于NPE异常

当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括: 

  • 调用 null 对象的实例方法。 
  • 访问或修改 null 对象的字段。 
  • 将 null 作为一个数组,获得其长度。 
  • 将 null 作为一个数组,访问或修改其时间片。 
  • 将 null 作为 Throwable 值抛出。 

应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。 


 2. 运行期异常的处理

  异常可以使用catch进行捕获,然后进行处理。

    @Test
    public void testArithmeticException() {
        try {
            int result = 10 / 0;
            System.out.println("try中异常之后的代码不会执行");
        } catch (ArithmeticException e) {
            System.out.println("进行异常处理:");
            System.out.println(e.getMessage());
        }
        System.out.println("try...catch之后的代码可以执行");
    }

 

3. 运行期异常的抛出  

  不进行处理,可以将异常抛给上层,由上层进行处理。

    public static void main(String[] args) {

        try {
            testNullPointerException();
        } catch (NullPointerException e) {
            e.printStackTrace();
            System.out.println("异常由上层进行处理");
        }
        //如果前面的代码中发生异常,后面的代码就不会执行
        System.out.println("调用成功");
    }

    public static void testNullPointerException() {

        int[] array = new int[10];
        array = null;
        //由于执行者不处理异常,异常会自动抛出
        int length = array.length;
        System.out.println(length);
    }

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Mr24/p/9193339.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值