精华内容
下载资源
问答
  • 主要介绍了Java异常退出条件的判断示例代码,涉及常见异常退出条件等相关内容,具有一定参考价值,需要的朋友可以了解下。
  • Java进程异常退出

    千次阅读 2018-10-28 13:03:24
    今天,内网测试服务器A总是运行一段时间就服务器进程自行退出了,给出了“Java Result :137”这样的错误码。上网查了一下这个137,感觉没有啥有价值的东西。一开始怀疑项目中的JNI调用崩溃到底层,但是没有看到core...

           今天,内网测试服务器A总是运行一段时间就服务器进程自行退出了,给出了“Java Result :137”这样的错误码。上网查了一下这个137,感觉没有啥有价值的东西。一开始怀疑项目中的JNI调用崩溃到底层,但是没有看到core.*这样的崩溃日志,同时也没有发现OOM的日志,也没有常见的Java 的堆异常log,关键是同样的环境,另外一台机器B,压力远比这个大,都稳定运行很长时间没有问题。下午又崩溃了两三次,一度怀疑Java是不是有什么bug,不过这个想法立马被我否认了,先从自己找原因。

          晚上,处理完手里的其他事,到家都十一点了,觉得这个崩溃解决不了,就没法睡觉。拿起手机,随意搜了一下“JAVA进程无端退出”,看到了一篇博客提出一个运维神指令dmesg(ps:有时候这个真是救命的神指令)可以查到一个进程的异常信息,在故障诊断方面非常有用。抱着死马当活马医的想法,在出问题的机器敲了一下“dmesg -T | grep java”,看到了“memory cgroup out of memory ,processor kill ....”,这下舒了一口气,JVM进程退出的原因算是知道了,被系统杀掉了,难怪看不到log。

         不过为什么被杀呢,查了一下cgroup(详情https://blog.csdn.net/huang987246510/article/details/80765628),了解cgroup是Linux提供一种管理系统资源的机制,尤其是控制虚拟机资源或者docker资源有广泛的应用。由于之前知道这个机器A的内存是足够大,为什么内存足够确使用呢。另外一个机器B在同样的JVM虚拟机配置下却可以。通过查询,我发现Docker可以对系统资源进行设置。这里我注意到Docker,猜想这个机器是不是有什么特殊的,这个机器是不是个docker并且限制了内存,但是Java并不能感知到这种限制。想到之前,在通过TOP 观察java进程使用内存,总是徘徊在某个定值附近,大量的内存不被使用,我查了一下docker相关知识,了解到docker通过cgroup机制,实现进程之间诸如CPU,内存,文件系统,网络等资源的隔离,而一些从执行环境收集信息的应用程序已经在 cgroups 存在之前就被执行了。“top”,“free”,“ps”,甚至 JVM 等工具都没有针对在容器内执行高度受限的 Linux 进程进行优化。详情:https://fabiokung.com/2014/03/13/memory-inside-linux-containers/;所以这些收集程序的信息是不准确,只能反映物理机的状况。至此,我假想这个A是个Docker,并且内存做了一定的限制,并且这个限制低于Xmx的设置,从而在运行时,Java堆内存在分配的时候超过了Docker的限制,就触发了cgroup的资源管理机制,在进程组使用的内存达到限额再申请内存,就会触发OOM(out of memory),从而导致进程退出,后来经过和运维同学确认这个机器配置,符合我的猜想,Docker且内存限制8G(低于设置的Xmx12G)。我修改一下Xmx,问题得以解决。

        上述只是临时解决了问题,有没有更好的办法让Java自己感知到Docker的资源配置呢,比如内存和CPU等。幸运的是,JDK在1.8u131+及java9以后已经考虑这些问题,并且加入了实验性支持参数。具体来说,可以分为两个方面:

    一、CPU限制,即如果没有显式指定-XX:ParalllelGCThreads 或者 -XX:CICompilerCount, 那么JVM使用docker的cpu限制。如果docker有指定cpu limit,jvm参数也有指定-XX:ParalllelGCThreads 或者 -XX:CICompilerCount,那么以指定的参数为准;

    二、内存限制,通过加上-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap才能使得Xmx感知docker的memory limit;默认情况下,通过java -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal可以看到 bool UseCGroupMemoryLimitForHeap = false {experimental} 是关闭的,需要手动打开;打开方式也比较简单,在项目启动参数加上 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap,这样JVM的堆内存将取Xmx和Docker设置的最小值,至此圆满解决问题。

    总结:

    1、在无异常log情况,应用退出,可以先考虑系统中断,dmesg查询相关信息

    2、docker环境会影响应用,使用需要慎重,尤其是开发者和运维人员分离的情况下,开发者应该尽量了解到运维对系统的设置。

    3、JVM的-XX参数需要了解,虽然大部分没有用,但是有些参数对系统优化非常有价值

    下面是官方对Docker支持的文档,不再翻译赘述。

    https://blogs.oracle.com/java-platform-group/java-se-support-for-docker-cpu-and-memory-limits

    参考文献:https://blog.csdn.net/green1893/article/details/78192017?utm_source=blogxgwz4

     

     

     

     

     

     

     

     

    展开全文
  • java程序异常退出排查

    千次阅读 2019-04-20 10:05:38
    由于公司线上的一个服务近期一直异常退出,按照往常经验,内存溢出!启动参数加个打印内存溢出时配置,然后坐等下一次内存溢出出现,再分析一下hprof 具体请 点击查看 添加配置信息 -XX:+HeapDumpOnOutOfMemoryError...

    1.前言

    由于公司线上的一个服务近期一直异常退出,按照往常经验,内存溢出!启动参数加个打印内存溢出时配置,然后坐等下一次内存溢出出现,再分析一下hprof 具体请 点击查看
    添加配置信息 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/webser/logs/error.hprof

    然而,事情总不会这么一帆风顺,程序还是照样退出,并且没有dump文件生成,what???

    2.原因分析

    接下来我们带着问题分析
    1.为什么没有get到dump文件?
    2.为什么程序会down掉?
    3.假设是溢出,该怎么配置堆内存?
    4.假设是内存溢出,哪里溢出了?

    首先我们要知道jvm的内存分配机制 点击查看

    于是猜想程序异常退出是不是有两种情况,一种是jvm杀死,一种是linux系统杀死?之后查看linux系统日志如下

    .tail -300f /var/log/messages
    
    Apr 17 14:23:41 iZbp1g9hysunkzqd9qadsxZ kernel: Out of memory: Kill process 13466 (java) score 793 or sacrifice child
    Apr 17 14:23:41 iZbp1g9hysunkzqd9qadsxZ kernel: Killed process 13466 (java) total-vm:2755444kB, anon-rss:803356kB, file-rss:0kB, shmem-rss:0kB
    Apr 17 14:23:41 iZbp1g9hysunkzqd9qadsxZ systemd-logind: Removed session 4071.
    

    由日志可知,确实是内存溢出被杀死了。

    那么内存是如何溢出的呢?我们来统计一下内存占用信息

    (1)系统未运行程序时的内存信:总共1g,使用了112M,buff 231M,空闲670M

    image.png

    (2)程序初次运行后内存信息:java程序占用469-112 = 357M,buff232M,空闲 313M

    image.png

    (3)那么问题来了,假设我们的堆内存设置了400M会出现什么情况?现在系统的剩余内存是313M,而400M的堆内存目前只使用了 84M(下图展示),代表还有 400-84 = 316M未使用,316>313 这种情况就危险了,假设堆内存使用达到了峰值,那么就会出现内存飙升,linux系统识别到内存不够用了,就把我们的java程序kill掉!下面的信息是通过jmap -heap [进程id]查看java堆内存使用信息

    注:上述分析还不包含Meta Space,这个空间是存储永久代对象,如果没有设置它的大小会无限增加
    image.png

    3.如何解决

    我们现在知道了是内存溢出的问题,那么哪里溢出了呢,怎么优化呢?我们照样带着问题解决

    1.假设是代码编写问题,产生大量对象占用内存(更糟糕的写法的产生的对象没有被回收!!)
    2.由上可知1g内存总量,堆内存配置400M过大,那么该如何配置?
    3.ecache缓存问题?(用到了ecache,并且手动生成线上的堆dump进行分析,发现ecache占用了大量堆内存)

    #生成dump文件
    jmap -dump:live,format=b,file=/path/heap.hprof 进程ID
    

    (1)代码上的优化
    正确使用ecache,不要丢过多的数据到ecache

    正确分配对象,不要产生过多无用对象(更可怕的是无法回收的对象 点击查看对象回收原理

    (2)linux上的优化
    由上图可知我们系统的buff偏大(我1g的系统,初始buff正常是100M),可以清理一下 linux buff/cache过大,清理脚本

    堆内存配置,由上分析我们可以计算出对内存配置256~320是合理的,大于400M会出现溢出
    堆配置一般选择 1024,、512、256、128(为什么要这样分配的,因为磁盘扇区,比如配置260,那么就多分配了一个扇区,导致数据读取要多加载)

    4.其他弯路

    尝试使用监控工具分析问题(点击查看),然而还不如直接生成dump分析堆内存

    #分析日志
    nohup /usr/java/jdk1.7.0_71/bin/java -Xms256m -Xmx256m -verbose:gc -Xloggc:/usr/webser/logs/jvmgc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/webser/logs/error.hprof -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCTimeStamps -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal -XX:+PrintGCDetails -XX:+UseG1GC -Dloader.path=/usr/webser/springboot/common_libs/ -jar /usr/webser/springboot/pddapi.jar --spring.config.location=/usr/webser/springboot/pddapi_conf/application.properties --spring.profiles.active=pro,order_pdd > /dev/null 2>&1 &
     
    
     -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.rmi.port=9004 -Djava.rmi.server.hostname=172.16.223.16
     
    nohup java  \
    -Djava.rmi.server.hostname=172.16.223.16 \
    -Dcom.sun.management.jmxremote.port=9004 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dloader.path=/usr/webser/springboot/common_libs/ -jar /usr/webser/springboot/pddapi.jar --spring.config.location=/usr/webser/springboot/pddapi_conf/application.properties --spring.profiles.active=pro,order_pdd > /dev/null 2>&1 & 
    
     
    172.16.223.16(内)
    47.111.10.xx:9004(外)
    monitorRole QED
    
    47.111.10.xx iZbp1g9hysunkzqd9qadsxZ 
    
     
    -XX:+UseG1GC
    -XX:+UseCMSCompactAtFullCollection 
    -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9004 -Djava.rmi.server.hostname=47.111.10.xx
    
    
    nohup /usr/java/jdk1.7.0_71/bin/java -server -Xms400m -Xmx400m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=64m -XX:MaxPermSize=128m -Xss256k -Dloader.path=/usr/webser/springboot/common_libs/ -jar /usr/webser/springboot/pddapi.jar --spring.config.location=/usr/webser/springboot/pddapi_conf/application.properties --spring.profiles.active=pro,order_pdd > /dev/null 2>&1 &
    
    
    [Full GC (Metadata GC Threshold) 28.629: [Tenured: 45403K->49950K(273088K), 0.2043653 secs] 130237K->49950K(395968K), [Metaspace: 57984K->57984K(1101824K)], 0.2044567 secs] [Times: user=0.20 sys=0.01, real=0.20 secs] 
    
    [GC (Allocation Failure) 64.026: [DefNew: 112585K->8406K(122880K), 0.0323023 secs] 162536K->58357K(395968K), 0.0324265 secs] [Times: user=0.03 sys=0.00, real=0.03 secs] 
    
    [GC (Allocation Failure) [DefNew: 6144K->0K(9216K), 0.0040708 secs] 0K->0K(19456K), 0.0041138 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
    一次分配失败GC,处理新生代从6144K到0 k空间(新生代共9216K空间),堆 共19456K空间)
    

    5.参考

    某Java服务异常退出原因排查过程分享
    JVM参数MetaspaceSize的误解

    展开全文
  • 写登录时,把已经登录的用户加到一个队列里,用来判断是否重复登录,如果程序出现异常退出,来不及从队列删除,这个问题应该怎么解决?
  • Java while循环的退出

    2019-12-18 20:40:20
    ![图片说明]... 我是想输入“exit”退出循环,结果报错,请教下这个代码有什么问题? 除了这个报错之外,可能还有写法方面的问题等等 请一并指出来,谢谢!
  • 系统core和java虚拟机异常退出日志设置
  • Java如何退出程序

    千次阅读 2020-08-15 16:57:52
    用 System.exit(0) 即可 jdk文档:System.exit(int status)是中止当前虚拟机的运行,即...status是状态码,0表示正常退出程序,其他值表示异常退出。 return 是函数中返回某个变量的关键字,只能退出方法。 例子: ...

    System.exit(0) 即可

    jdk文档:System.exit(int status)是中止当前虚拟机的运行,即强制性退出程序。status是状态码,0表示正常退出程序,其他值表示异常退出。

    return 是函数中返回某个变量的关键字,只能退出方法。

    例子:
    在这里插入图片描述

    展开全文
  • Java异常常见面试题

    千次阅读 多人点赞 2019-04-17 20:13:55
    1. 什么是Java中的异常异常是指程序在运行过程中发生的一些不正常事件。(如:除0溢出,数组下标越界,所读取的文件不存在) 2. Java中的异常处理关键字是什么? throw:有时我们明确要创建异常对象然后抛出它来...

    1. 什么是Java中的异常?

    异常是指程序在运行过程中发生的一些不正常事件。(如:除0溢出,数组下标越界,所读取的文件不存在)

    2. Java中的异常处理关键字是什么?

    1. throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。
    2. throws:当我们在方法中抛出任何已检查的异常而不处理它时,我们需要在方法签名中使用throws关键字让调用者程序知道该方法可能抛出的异常。调用方法可以处理这些异常或使用throws关键字将其传播给它的调用方法。我们可以在throws子句中提供多个异常,也可以与main()方法一起使用。
    3. try-catch:我们在代码中使用try-catch块进行异常处理。try是块的开始,catch是在try块的末尾处理异常。我们可以使用try有多个catch块,try-catch块也可以嵌套。catch块需要一个应该是Exception类型的参数。
    4. finally:finally块是可选的,只能用于try-catch块。由于异常会暂停执行过程,因此我们可能会打开一些不会关闭的资源,因此我们可以使用finally块。finally块总是被执行,无论是否发生异常。

    3.Java中的检查型异常和非检查型异常有什么区别?

    检查型异常和非检查型异常的主要区别在于其处理方式。检查型异常都需要使用try,catch 和finally 关键字在编译器进行处理,否则会出现编译器报错。对于非检查型异常则不需要这样做。Java中所有继承 Exception 的类的异常都是检查型异常,所有继承RuntimeException 的异常都被称为 非检查型异常。

    4. error和exception有什么区别?

    1. error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
    2. exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

    5. final, finally, finalize的区别?

    1. final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
    2. finally是异常处理语句结构的一部分,表示总是执行。
    3. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等(在垃圾回收的时候会调用被回收对象的此方法)

    6. Java 中什么是异常链?

    异常链是指在进行一个异常处理时抛出了另外一个异常,由此产生了一个异常链条,大多用于将受检查异常(checked exception)封装成为非受检查异常(unchecked exception)或者 RuntimeException。特别注意如果你因为一个异常而决定抛出另一个新的异常时一定要包含原有的异常,这样处理程序才可以通过 getCause() 和 initCause() 方法来访问异常最终的根源

    7. .try-catch-finally-return执行顺序?

    1. 不管是否有异常产生,finally块中代码都会执行
    2. 当try和catch中有return语句时,finally块仍然会执行
    3. finally是在return后面的表达式运算执行的,所以函数返回值在finally执行前确定的,无论finally中的代码怎么样,返回的值都不会改变,仍然是之前return语句中保存的值
    4. finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值

    8. 列出常见的几种RunException?

    NullPointerException - 空指针引用异常
    ClassCastException - 类型强制转换异常
    IllegalArgumentException - 传递非法参数异常
    ArithmeticException - 算术运算异常
    ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
    IndexOutOfBoundsException - 下标越界异常
    NegativeArraySizeException - 创建一个大小为负数的数组错误异常
    NumberFormatException - 数字格式异常
    SecurityException - 安全异常
    UnsupportedOperationException - 不支持的操作异常
    NegativeArrayException - 数组负下标异常
    EOFException - 文件已结束异常
    FileNotFoundException - 文件未找到异常
    SQLException - 操作数据库异常
    IOException - 输入输出异常
    NoSuchMethodException - 方法未找到异常
    java.lang.AbstractMethodError - 抽象方法错误。当应用试图调用抽象方法时抛出。
    java.lang.AssertionError - 断言错。用来指示一个断言失败的错误。
    java.lang.ClassCircularityError - 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。
    java.lang.ClassFormatError - 类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时输出。
    java.lang.Error - 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。

    9. Java异常类的重要方法是什么?

    1. 异常及其所有子类不提供任何特定方法,并且所有方法都在基类Throwable中定义。
    2. String getMessage():此方法返回消息String of Throwable,并且可以在通过构造函数创建异常时提供消息。
    3. String getLocalizedMessage():提供此方法,以便子类可以覆盖它以向调用程序提供特定于语言环境的消息。此方法getMessage()的可抛出类实现只是使用方法来返回异常消息。
    4. synchronized Throwable getCause() :此方法返回异常的原因或null id,原因未知。
    5. String toString():此方法以String格式返回有关Throwable的信息,返回的String包含Throwable类和本地化消息的名称。
    6. void printStackTrace() :此方法将堆栈跟踪信息打印到标准错误流,此方法已重载,我们可以将PrintStream或PrintWriter作为参数传递,以将堆栈跟踪信息写入文件或流。
    展开全文
  • java异常处理机制

    千次阅读 2021-01-11 19:42:29
    具体来说就是程序发生异常异常机制提供程序的退出安全通道。 通俗来说:就是为了让程序继续执行下去,不至于中断。 程序错误: 程序错误分为三种:1.编译错误 2.运行时错误 3.逻辑错误。 (1)编译错误:因为...
  • java异常处理

    千次阅读 2017-10-24 18:15:42
    java异常处理基础
  • JAVA异常分类和自定义异常定义

    千次阅读 2019-06-10 11:16:59
    异常概念: 1、如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下 会抛出一个...2、Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 Exception Error 1....
  • 一种实现方式是(metaq是...3.下次文件启动时,先判断临时文件是否存在,如果存在,则起线程对异常信息进行处理 liunx下kill -9不会使shutdownhook执行,eclipse调试下直接关闭也不会执行。使用kill -15可以使...
  • Java异常面试题

    万次阅读 多人点赞 2019-09-29 11:55:48
    文章目录1. Error 和 Exception 区别是什么?2. 运行时异常和一般异常区别是什么?3.NoClassDefFoundError 和 ClassNotFoundException 区别?4. JVM 是如何处理异常的?...7. Java常见异常有哪些 1. Error 和 Exce...
  • Java异常处理流程

    千次阅读 多人点赞 2019-09-29 10:56:56
    Java应用中,异常的处理机制分为抛出异常和捕获异常。 文章目录1. 抛出异常2. 捕获异常3. 异常的抛出与捕获3.1 直接抛出异常3.2 封装异常再抛出3.3 捕获异常3.4 自定义异常3.5 try-catch-finally3.6 try-with-...
  • Java异常处理和异常抛出

    千次阅读 多人点赞 2019-02-21 13:11:44
    生活中的异常是指那些有异于常态,和正常情况不一样,有问题的状态,编程世界中的异常是指阻止当前方法或作用域继续执行的状态。比如,程序要打开一个不存的文件、网络连接中断、除零操作、操作数...一.Java异常体系...
  • JAVA线程异常终止

    千次阅读 2017-07-06 09:06:28
    设置当线程由于未捕获的异常突然终止而调用的默认处理程序,并且没有为该线程定义其他处理程序。 我们开发工程中经常使用到线程,在线程使用上,我们可能会有这样的场景: 伴随这一个业务产生一个比较耗时的任务,...
  • java 线程退出方法

    千次阅读 2019-06-18 10:30:47
    Android终止线程的方法 线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程...1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止 2. 使用interrupt()方法中断线程 3....
  • java 调用 JNI 异常退出通过 core 定位

    千次阅读 2018-07-11 20:04:10
    java 中存在jni调用,且不定期 java 进程全部消失,没有任何异常日志。通过分析 linux 的 core 文件来定位程序中哪里出了问题。 JNI 示例 首先构造一个带异常的 JNI,C函数中存在异常。 以下文件和命令都在...
  • Java线程异常终止

    千次阅读 2018-04-10 21:36:35
    设置当线程由于未捕获的异常突然终止而调用的默认处理程序,并且没有为该线程定义其他处理程序。 我们开发工程中经常使用到线程,在线程使用上,我们可能会有这样的场景:伴随这一个业务产生一个比较耗时的任务,而...
  • java退出执行addShutdownHook

    千次阅读 2014-01-27 10:29:50
    addShutdownHook()(JDK1.3引入),...运行完所有的挂钩后,如果已启用退出终结,那么虚拟机接着会运行所有未调用的终结方法。最后,虚拟机会暂停。注意,关闭序列期间会继续运行守护线程,如果通过调用exit方法来发
  • java程序退出时执行

    千次阅读 2020-06-18 10:48:56
    java程序退出时执行 描述 对于程序退出前执行特定过程, C++中有析构方法,java中可以使用Runtime中的addShutdownHook(Thread hook) 向JVM注册一个关闭的线程事件,程序一旦结束 时,线程hook就会被执行,处理最后...
  • 有效处理 Java 异常三原则

    千次阅读 2019-05-22 18:50:53
    有效处理 Java 异常三原则 java异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮、易于调试。 异常之所以是一种强大的调试手段,在于其回答了以下三个问题: 什么出了错? 在...
  • Java 异常模型综述

    千次阅读 多人点赞 2016-09-15 23:57:11
    发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前... 这就需要错误源能够通过某种方式,把适当的信息传递给某个接收者,该接收者将知道如何正确的处理这个问题,这就是Java的错误报告机制 —— 异常机制。
  • 下面小编就为大家带来一篇Java线程监听,意外退出线程后自动重启的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java异常体系unchecked异常check异常

    千次阅读 2017-11-18 10:01:26
    Java异常体系 异常的分类 Throwable对象可以分为两组。 uncheck异常一组是unchecked异常,异常处理机制往往不用于这组异常,包括:Error类通常是指Java的内部错误以及如资源耗尽的错误。当Error(及其衍生类)发生时...
  • Docker部署JAVA进程退出问题

    千次阅读 2018-11-29 16:53:15
    在容器执行脚本时注意,当前容器本身是主进程,Docker容器中的进程为守护进程(如...一旦容器进程退出,容器内部署的守护进程也随之退出,导致程序启动后就退出,并不会像在服务器上保持后台运行。如果后面使用ku...
  • Java异常处理终结篇——如何进行Java异常处理设计

    万次阅读 多人点赞 2014-02-28 15:08:57
    使用Java异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在Java程序中,如何进行异常设计。
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • java异常的捕获及处理

    万次阅读 多人点赞 2019-03-16 15:28:13
    一、Java异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。在Java中即,Java在编译或运行或者运行过程...
  • 作者:Maverick ... 1. 课前练习 ...如果不能找出至少两处错误,说明你还是一个“菜鸟”,对JAVA异常处理机制还不够了解,需要仔细阅读本文的内容,并走查一下自己编写的代码。如果你可以找出至少两处错误,恭

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,595
精华内容 70,238
关键字:

java异常退出

java 订阅