草庐IT

c++ - 函数的 try-catch 语法之间的区别

我最近在try-catchforfunction中遇到了这种语法。structA{inta;A(inti):a(i)//normalsyntax{try{}catch(...){}}A()//somethingdifferenttry:a(0){}catch(...){}voidfoo()//normalfunctiontry{}catch(...){}};两者syntaxarevalid.除了编码风格之外,这些语法之间是否有任何技术差异?其中一种语法在任何方面都优于其他语法吗? 最佳答案 第一个语法:tryblock的范围在成员初

c++ - 构造函数作为函数尝试 block - 异常中止程序

我不确定这是编译器的问题还是我做错了什么。我正在使用VisualStudio2013编译器。我有一个类,我需要在我的构造函数初始化器列表中获取大量资源,其中大部分资源都可能引发异常。我将成员初始值设定项列表包装在一个函数tryblock中,并在那里捕获了异常。但是即使catch子句没有重新抛出异常,我的程序仍然会中止。我不允许发布实际代码。所以我用这个等效的演示代码重现了这个问题。有人可以帮我解决这个问题吗?#includeusingnamespacestd;classA{public:A()try:i{0}{throw5;}catch(...){cout在执行此代码时,我收到一个Wi

c++ - 构造函数作为函数尝试 block - 异常中止程序

我不确定这是编译器的问题还是我做错了什么。我正在使用VisualStudio2013编译器。我有一个类,我需要在我的构造函数初始化器列表中获取大量资源,其中大部分资源都可能引发异常。我将成员初始值设定项列表包装在一个函数tryblock中,并在那里捕获了异常。但是即使catch子句没有重新抛出异常,我的程序仍然会中止。我不允许发布实际代码。所以我用这个等效的演示代码重现了这个问题。有人可以帮我解决这个问题吗?#includeusingnamespacestd;classA{public:A()try:i{0}{throw5;}catch(...){cout在执行此代码时,我收到一个Wi

php - 在 PHP Try Catch block 中抛出异常

我在Drupal6.module文件中有一个PHP函数。我正在尝试在执行更密集的任务(例如数据库查询)之前运行初始变量验证。在C#中,我曾经在Tryblock的开头实现IF语句,如果验证失败,则会引发新的异常。抛出的异常将在Catchblock中捕获。以下是我的PHP代码:function_modulename_getData($field,$table){try{if(empty($field)){thrownewException("Thefieldisundefined.");}//restofcodehere...}catch(Exception$e){throw$e->get

php - 在 PHP Try Catch block 中抛出异常

我在Drupal6.module文件中有一个PHP函数。我正在尝试在执行更密集的任务(例如数据库查询)之前运行初始变量验证。在C#中,我曾经在Tryblock的开头实现IF语句,如果验证失败,则会引发新的异常。抛出的异常将在Catchblock中捕获。以下是我的PHP代码:function_modulename_getData($field,$table){try{if(empty($field)){thrownewException("Thefieldisundefined.");}//restofcodehere...}catch(Exception$e){throw$e->get

java - 为什么在 catch 之后使用 finally 而不是 code

这个问题在这里已经有了答案:Whydoweusefinallyblocks?[duplicate](11个回答)关闭4年前。为什么要这样做}catch(SQLExceptionsqle){sqle.printStackTrace();}finally{cs.close();rs.close();}不是这个}catch(SQLExceptionsqle){sqle.printStackTrace();}rs.close();cs.close(); 最佳答案 因为如果抛出异常在执行tryblock之后没有代码除非异常被捕获。无论您的tr

java - 为什么在 catch 之后使用 finally 而不是 code

这个问题在这里已经有了答案:Whydoweusefinallyblocks?[duplicate](11个回答)关闭4年前。为什么要这样做}catch(SQLExceptionsqle){sqle.printStackTrace();}finally{cs.close();rs.close();}不是这个}catch(SQLExceptionsqle){sqle.printStackTrace();}rs.close();cs.close(); 最佳答案 因为如果抛出异常在执行tryblock之后没有代码除非异常被捕获。无论您的tr

java - try-finally 和 try-catch 的区别

有什么区别try{fooBar();}finally{barFoo();}和try{fooBar();}catch(Throwablethrowable){barFoo(throwable);//Doessomethingwiththrowable,logsit,orhandlesit.}我更喜欢第二个版本,因为它让我可以访问Throwable。这两种变体之间是否存在逻辑差异或首选约定?另外,有没有办法从finally子句访问异常? 最佳答案 这是两个不同的东西:只有在tryblock中抛出异常时才会执行catchblock。fin

java - try-finally 和 try-catch 的区别

有什么区别try{fooBar();}finally{barFoo();}和try{fooBar();}catch(Throwablethrowable){barFoo(throwable);//Doessomethingwiththrowable,logsit,orhandlesit.}我更喜欢第二个版本,因为它让我可以访问Throwable。这两种变体之间是否存在逻辑差异或首选约定?另外,有没有办法从finally子句访问异常? 最佳答案 这是两个不同的东西:只有在tryblock中抛出异常时才会执行catchblock。fin

java - 在 Java 中是否可以在同一个 catch block 中捕获两个异常?

这个问题在这里已经有了答案:CanIcatchmultipleJavaexceptionsinthesamecatchclause?(10个回答)关闭8年前。我需要捕获两个异常,因为它们需要相同的处理逻辑。我想做类似的事情:catch(Exceptione,ExtendsRuntimeExceptionre){//commonlogictohandlebothexceptions}是否可以避免在每个catchblock中重复处理程序代码? 最佳答案 Java7及更高版本Multiple-exceptioncatches受支持,从Ja