Groovy在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
处理内容信息 发布于:2024-10-23 14:26 中医脉络结果回传出参 发布于:2024-09-05 18:08 中医脉络结果回传入参 发布于:2024-09-05 18:08 中医脉络申请单查询返回 发布于:2024-09-04 17:46 中医脉络获取申请单入参 发布于:2024-09-04 16:30 这是一个groovy的基础语法 发布于:2024-07-17 09:09 groovy 测试 发布于:2024-07-16 16:07 lis获取项目 发布于:2024-05-29 11:17 通知LIS科室状态变更 发布于:2024-05-22 16:35 lis危急值上报 发布于:2024-05-21 14:23 收货需求日期 发布于:2024-04-03 18:44 成品宽表(分项目) 测试 发布于:2024-03-21 09:45 def result = [ msgCode: '' ] return result 发布于:2024-02-19 14:41 筛选存在和不存在的对象 发布于:2024-01-18 16:29 计算金蝶鉴权 发布于:2024-01-17 20:37 骨密度结果回传 发布于:2024-01-12 10:56 骨密度获取信息返回 发布于:2024-01-11 15:02 骨密度获取信息入参 发布于:2024-01-11 09:43 自动提交定金学费 发布于:2023-12-25 10:44 多条【定金/学费】合并为一条【协议收款】 发布于:2023-12-22 14:38 顾问业绩学费更新顾问业绩 发布于:2023-12-22 14:37 编辑学费更新收款的顾问业绩拆分 发布于:2023-12-22 14:36 学费编辑器效验 发布于:2023-12-22 13:35 自动生成排课明细 发布于:2023-12-12 09:13 根据排课日期生成日程 发布于:2023-12-11 10:17 排课排课效验 发布于:2023-12-11 09:13 排课排课效验 发布于:2023-12-08 15:15 线索线索分发 发布于:2023-12-07 15:32 获取钉钉花名册数据 发布于:2023-11-23 11:53 日期函数转换 发布于:2023-11-22 11:37 济南肺功能回写出参 发布于:2023-10-14 17:54 肺功能结果回传入参 发布于:2023-10-14 17:54 济南肺功能申请单出参 发布于:2024-09-04 18:04 济南肺功能获取申请单入参 发布于:2023-10-13 17:41 济南身高体重仪结果回写出餐 发布于:2023-10-09 14:48 身高体重仪结果回传入参 发布于:2023-10-09 15:34 身高体重仪信息查询返回 发布于:2024-01-11 14:32 济南获取身高体重信息 发布于:2023-10-20 15:49 新his查档返回 发布于:2023-09-11 17:20 老HIS取消计费出参 发布于:2023-09-04 19:28 老HIS取消计费入参 发布于:2023-09-04 19:28 老HIS计费返回 发布于:2023-09-04 19:28 杭州老HIS结算入参 发布于:2023-08-31 14:32 统一接口出参微脉 发布于:2023-08-25 15:00 新his查档 发布于:2023-10-17 16:40 统一接口入参微脉 发布于:2023-08-25 15:00 老his团检计费 发布于:2023-07-04 17:59 老his发票查询档案 发布于:2023-07-06 17:29 分组list,分批list 发布于:2023-06-12 12:42 老HIS发票 发布于:2023-07-06 17:30 [更多]
显示目录

异常处理



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

异常处理

任何编程语言都需要异常处理来处理运行时错误,从而可以保持应用程序的正常流程。

异常通常会破坏应用程序的正常流程,这就是为什么我们需要在我们的应用程序中使用异常处理的原因。

例外大致分为以下类别 -

  • 检测异常 -扩展Throwable类(除了RuntimeException和Error)的类称为检查异常egIOException,SQLException等。检查的异常在编译时检查。

一个典型的情况是FileNotFoundException。假设您的应用程序中有以下代码,它从E盘中的文件读取。

class Example {
   static void main(String[] args) {
      File file = new File("E://file.txt");
      FileReader fr = new FileReader(file);
   } 
}

如果文件(file.txt)不在E盘中,那么将引发以下异常。

抓取:java.io.FileNotFoundException:E:\ file.txt(系统找不到指定的文件)。

java.io.FileNotFoundException:E:\ file.txt(系统找不到指定的文件)。

  • 未经检查的异常 -扩展RuntimeException的类称为未检查异常,例如,ArithmeticException,NullPointerException,ArrayIndexOutOfBoundsException等。未检查的异常在编译期不检查,而是在运行时检查。

一个典型的情况是ArrayIndexOutOfBoundsException,当您尝试访问大于数组长度的数组的索引时,会发生这种情况。以下是这种错误的典型例子。

class Example {
   static void main(String[] args) {
      def arr = new int[3];
      arr[5] = 5;
   } 
}

当上面的代码执行时,将引发以下异常。

抓取:java.lang.ArrayIndexOutOfBoundsException:5

java.lang.ArrayIndexOutOfBoundsException:5

  • 错误 -错误无法恢复。 OutOfMemoryError,VirtualMachineError,AssertionError等。

这些是程序永远不能恢复的错误,将导致程序崩溃。

下图显示了如何组织Groovy中的异常层次结构。它都基于Java中定义的层次结构。

层次结构异常

捕捉异常

方法使用try和catch关键字的组合捕获异常。 try / catch块放置在可能生成异常的代码周围。

try { 
   //Protected code 
} catch(ExceptionName e1) {
   //Catch block 
}

所有可能引发异常的代码都放在受保护的代码块中。

在catch块中,您可以编写自定义代码来处理异常,以便应用程序可以从异常中恢复。

让我们看一个类似的代码示例,我们在上面看到一个索引值大于数组大小的数组。但这次让我们将我们的代码包装在try / catch块中。

class Example {
   static void main(String[] args) {
      try {
         def arr = new int[3];
         arr[5] = 5;
      } catch(Exception ex) {
         println("Catching the exception");
      }

      println("Let's move on after the exception");
   }
}

当我们运行上面的程序,我们将得到以下结果 -

Catching the exception 
Let's move on after the exception

从上面的代码,我们在try块中包装错误的代码。在catch块中,我们只是捕获我们的异常并输出一个异常已经发生的消息。

多个捕获块

可以有多个catch块来处理多种类型的异常。对于每个catch块,根据引发的异常的类型,您将编写代码来相应地处理它。

让我们修改上面的代码来具体捕捉ArrayIndexOutOfBoundsException。以下是代码段。

class Example {
   static void main(String[] args) {
      try {
         def arr = new int[3];
         arr[5] = 5;
      }catch(ArrayIndexOutOfBoundsException ex) {
         println("Catching the Array out of Bounds exception");
      }catch(Exception ex) {
         println("Catching the exception");
      }

      println("Let's move on after the exception");
   } 
}

当我们运行上面的程序,我们将得到以下结果 -

Catching the Aray out of Bounds exception 
Let's move on after the exception

从上面的代码,你可以看到ArrayIndexOutOfBoundsException catch块首先被捕获,因为它意味着异常的标准。

finally块

finally块跟在try块或catch块之后。代码的finally块总是执行,而不管异常的发生。

使用finally块可以运行任何你想要执行的清除类型语句,无论在受保护代码中发生什么。该块的语法如下。

try { 
   //Protected code 
} catch(ExceptionType1 e1) { 
   //Catch block 
} catch(ExceptionType2 e2) { 
   //Catch block 
} catch(ExceptionType3 e3) { 
   //Catch block 
} finally {
   //The finally block always executes. 
}

让我们修改我们上面的代码并添加finally代码块。以下是代码段。

class Example {
   static void main(String[] args) {
      try {
         def arr = new int[3];
         arr[5] = 5;
      } catch(ArrayIndexOutOfBoundsException ex) {
         println("Catching the Array out of Bounds exception");
      }catch(Exception ex) {
         println("Catching the exception");
      } finally {
         println("The final block");
      }

      println("Let's move on after the exception");
   } 
}

当我们运行上面的程序,我们将得到以下结果 -

Catching the Array out of Bounds exception 
The final block 
Let's move on after the exception

以下是Groovy中提供的异常方法 -

public String getMessage()

返回有关已发生异常的详细消息。此消息在Throwable构造函数中初始化。

public Throwable getCause()

返回由Throwable对象表示的异常原因。

public String toString()

返回与getMessage()的结果连接的类的名称。

public void printStackTrace()

将toString()的结果与堆栈跟踪一起打印到System.err,错误输出流。

public StackTraceElement [] getStackTrace()

返回包含堆栈跟踪上的每个元素的数组。索引0处的元素表示调用堆栈的顶部,数组中的最后一个元素表示调用堆栈底部的方法。

public Throwable fillInStackTrace()

使用当前堆栈跟踪填充此Throwable对象的堆栈跟踪,添加到堆栈跟踪中的任何以前的信息。

例子

下面是使用上面给出的一些方法的代码示例 -

class Example {
   static void main(String[] args) {
      try {
         def arr = new int[3];
         arr[5] = 5;
      }catch(ArrayIndexOutOfBoundsException ex) {
         println(ex.toString());
         println(ex.getMessage());
         println(ex.getStackTrace());  
      } catch(Exception ex) {
         println("Catching the exception");
      }finally {
         println("The final block");
      }

      println("Let's move on after the exception");
   } 
}

当我们运行上面的程序,我们将得到以下结果 -

java.lang.ArrayIndexOutOfBoundsException: 5 
5 
[org.codehaus.groovy.runtime.dgmimpl.arrays.IntegerArrayPutAtMetaMethod$MyPojoMetaMet 
hodSite.call(IntegerArrayPutAtMetaMethod.java:75), 
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) ,
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) ,
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) ,
Example.main(Sample:8), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ,
java.lang.reflect.Method.invoke(Method.java:606),
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93),
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325),
groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1443),
org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:893),
groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:287),
groovy.lang.GroovyShell.run(GroovyShell.java:524),
groovy.lang.GroovyShell.run(GroovyShell.java:513),
groovy.ui.GroovyMain.processOnce(GroovyMain.java:652),
groovy.ui.GroovyMain.run(GroovyMain.java:384),
groovy.ui.GroovyMain.process(GroovyMain.java:370),
groovy.ui.GroovyMain.processArgs(GroovyMain.java:129),
groovy.ui.GroovyMain.main(GroovyMain.java:109),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ,
java.lang.reflect.Method.invoke(Method.java:606),
org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:109),
org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:131),
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57),
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ,
java.lang.reflect.Method.invoke(Method.java:606),
com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)]

The final block 
Let's move on after the exception
由JSRUN为你提供的Groovy在线运行、在线编译工具
        JSRUN提供的Groovy 在线运行,Groovy 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout