tycatch(Exception ex)啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tycatch(Exception ex)啥意思相关的知识,希望对你有一定的参考价值。

捕获异常。

如果在try的代码块里面发生了异常。就去执行catch的语句。

以下面的程序段为示例:

try

return a/b;

catch (Exception e)

//当b为0的时候这里可以打印提示:除数不能为0

异常的通俗原理在于,当出现某些错误的时候,用户又不想直接把程序直接关闭,那么就在用户捕捉到的异常里进行处理,这样程序可以继续运行,而不是马上关闭。

扩展资料:

Java关键字

用于try..catch..finally块,进行异常捕获。

完整的使用方法是

try 

语句块1

 catch (<? extends Throwable> e) 

语句块2.1

 catch (<? extends Throwable> e) 

语句块2.2

 catch (<? extends Throwable> e) 

语句块2.3

...

 finally 

语句块3

catch可以出现0次、1次或多次,finally可以出现0次或1次,但是catch和finally不能同时不出现。

参考资料来源:百度百科-try (java关键字)

参考技术A 给你举个简单的例子吧.
看下面的程序段:
try
return a/b;

catch (Exception e)
//当b为0的时候这里可以打印提示:除数不能为0

异常的通俗原理在于,当出现某些错误的时候,你又不想直接把程序直接关闭,那么就在你捕捉到的异常里进行处理,这样程序可以继续运行,而不是马上关闭.
上面你返回a/b,正常情况下b不是0,那么就直接返回,不会执行catch里的东西,但是当你的b是0,就无法返回数据,那么异常了,异常然后被catch捕捉到,就执行catch里的语句,然后继续运行下面的代码.本回答被提问者采纳
参考技术B 捕获异常 如果在try的代码块里面发生了异常 就去执行catch的语句. 参考技术C try

catch(Exception e)


其实没有什么深奥的,try-catch就是监视try中的语句,如果抛出catch中声明的异常类型.比如ArrayIndexOutOfBoundsException就是数组越界的异常.

假设try中有语句int[] i=new int[10];如果你调用int[14]就一定会抛出ArrayIndexOutOfBoundsException这个异常,如果你写了try-catch且写了
catch(ArrayIndexOutOfBoundsException e)则这个异常就会被捕获,并执行catch程序块中的代码.

一般来说catch中的代码只是用来客观反映问题,比如吧异常打印出来,或者跟踪异常..不应执行实际的操作..

try-catch过后程序仍然继续执行(不写try-catch则程序抛出异常后自行终止)

参考资料:http://zhidao.baidu.com/question/110127114.html?fr=qrl&cid=114&index=4

参考技术D 补充一下,ex记录了你的错误信息,你可以在tatch中显示出来的

“...解析为非模块实体并且无法使用此构造导入”是啥意思?

【中文标题】“...解析为非模块实体并且无法使用此构造导入”是啥意思?【英文标题】:What does "... resolves to a non-module entity and cannot be imported using this construct" mean?“...解析为非模块实体并且无法使用此构造导入”是什么意思? 【发布时间】:2017-01-17 20:17:59 【问题描述】:

我有一些 TypeScript 文件:

MyClass.ts

class MyClass 
  constructor() 
  

export = MyClass;

MyFunc.ts

function fn()  return 0; 
export = fn;

MyConsumer.ts

import * as MC from './MyClass';
import * as fn from './MyFunc';
fn();

这在尝试使用 new 时给了我错误

模块“MyClass”解析为非模块实体,无法使用此构造导入。

当尝试拨打fn()

无法调用类型缺少调用签名的表达式。

什么给了?

【问题讨论】:

感谢分享答案。我建议删除javascript作为主要标签并保留ecmascript-6,因为这里的主要标签是typescript。该问题错误地假设export =(TS 功能)可能与import ... from 配对,而it should be paired with import =。它基本上是 ES6 模块导入/导出 vs CJS/AMD。 【参考方案1】:

为什么它不起作用

import * as MC from './MyClass';

这是 ES6/ES2015 风格的 import 语法。其确切含义是“获取从./MyClass 加载的模块命名空间对象,并在本地将其用作MC”。值得注意的是,“模块命名空间对象”只包含一个带有属性的普通对象。 ES6 模块对象不能作为函数或new 调用。

再说一遍:ES6 模块命名空间对象不能作为函数或new 调用。

import 使用模块中的* as X 的东西被定义为只有属性。在降级的 CommonJS 中,这可能没有得到完全尊重,但 TypeScript 会告诉你标准定义的行为是什么。

什么有效?

你需要使用 CommonJS 风格的导入语法来使用这个模块:

import MC = require('./MyClass');

如果你控制这两个模块,你可以使用export default来代替:

MyClass.ts

export default class MyClass 
  constructor() 
  

MyConsumer.ts

import MC from './MyClass';

我为此感到难过;规则是愚蠢的。

使用 ES6 导入语法会很好,但现在我必须这样做import MC = require('./MyClass'); 的事情?这是2013年!瘸!但悲伤是编程的正常部分。请跳至 Kübler-Ross 模型的第五阶段:接受。

TypeScript 在这里告诉你这是行不通的,因为它行不通。有一些技巧(将namespace 声明添加到MyClass 是一种流行的方式来假装它有效),它们可能今天在您的特定降级模块捆绑器(例如汇总)中工作,但这是虚幻。目前还没有任何 ES6 模块实现,但不会永远如此。

想象一下你未来的自己,试图在一个整洁的原生 ES6 模块实现上运行,并发现你已经通过尝试使用 ES6 语法来做一些 ES6 明确不做的事情,从而使自己面临重大失败 /em>。

我想利用我的非标准模块加载器

也许你有一个模块加载器,当不存在时“有用地”创建default 导出。我的意思是,人们制定标准是有原因的,但有时忽略标准很有趣,我们可以认为这是一件很酷的事情。

MyConsumer.ts 更改为:

import A from './a';

并指定allowSyntheticDefaultImports 命令行或tsconfig.json 选项。

请注意,allowSyntheticDefaultImports 根本不会改变代码的运行时行为。它只是一个标志,告诉 TypeScript 你的模块加载器在不存在时创建 default 导出。它不会神奇地让你的代码在 nodejs 中运行,而之前它没有。

【讨论】:

commonjs 样式不需要commonjs 目标吗?当您以 es6/es2015 为目标时,有没有办法让它工作? 你不能让它针对 ES6 工作因为它在 ES6 中不起作用... 我是否正确理解如果我的目标是 ES2015 模块,则无法引用具有 export = MyClass 的 CommonJS 模块?我唯一的选择是将我的模块设置为 commonjs 并继续通过不使用现代 ES 让世界变得更糟? 在2.7 release notes 的--esModuleInterop 下,它说“我们强烈建议将其应用于新项目和现有项目”。在我看来,应该修改这个答案(以及链接到此处的DefinitelyTyped 中的FAQ entry/policy)以反映新的立场。 太时髦了。【参考方案2】:

TypeScript 2.7 通过发出新的辅助方法来引入支持: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#support-for-import-d-from-cjs-form-commonjs-modules-with---esmoduleinterop

所以在 tsconfig.json 中添加这两个设置:


    // Enable support for importing CommonJS modules targeting es6 modules
    "esModuleInterop": true,

    // When using above interop will get missing default export error from type check since
    // modules use "export =" instead of "export default", enable this to ignore errors.
    "allowSyntheticDefaultImports": true

现在你可以使用:

import MyClass from './MyClass';

【讨论】:

我没有使用esModuleInterop,而是使用了resolveJsonModule以及您使用allowSyntheticDefaultImports的其他建议,它对我有用。【参考方案3】:

在此处添加我的 2 美分,以防其他人遇到此问题。

我在不修改 tsconfig.json 的情况下解决问题的方法(这在某些项目中可能会出现问题),我只是禁用了 oneline 的规则。

import MC = require('./MyClass'); // tslint:disable-line

【讨论】:

【参考方案4】:

尝试在我的项目中包含 npm debounce 包时出现此错误。

当我尝试上面接受的解决方案时,我遇到了一个异常:

以 ECMAScript 模块为目标时,不能使用导入分配。 考虑使用'import * as ns from "mod"'、'import a from "mod"'、 'import d from "mod"',或其他模块格式。

这最终奏效了:

import debounce from 'debounce' 

【讨论】:

以上是关于tycatch(Exception ex)啥意思的主要内容,如果未能解决你的问题,请参考以下文章

'except Exception as e'在python中是啥意思? [关闭]

catch (Exception e) catch (Throwable e) catch (IOException e) 再抛出异常,catch里的分别是啥意思

异常里的toString是啥意思?

PCI-E 2x8 Riser Card 是啥意思

FORTRAN语言中,FORMAT(1X,E8.2)是啥意思

php中Exception和\Exception有啥区别