javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

为什么try..catch块需要大括号?

当在其他语句中,例如if ... else时,如果一个块中只有一条指令,则可以避免使用花括号,但您不能使用try ... catch块来做到这一点:编译器不会购买它。 例如:

try
    do_something_risky();
catch (...)
    std::cerr << "Blast!" << std::endl;

使用上面的代码,g ++只是说它在do_something_risky()之前需要一个'{'。 为什么try ... catch和if if else之间的行为差异?

谢谢!

trans by 2020-08-09T00:20:20Z

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

我最近在函数try-catch上遇到了这种语法。

struct A
{
  int a;

  A (int i) : a(i)  // normal syntax
  {
    try {}
    catch(...) {}
  }

  A ()   // something different
  try : a(0) {}
  catch(...) {}

  void foo ()  // normal function
  try {}
  catch(...) {}
};

两种语法均有效。 除了编码风格之外,这些语法之间是否有技术上的区别? 一种语法在任何方面都优于其他语法吗?

trans by 2020-08-06T00:19:29Z

Java异常不笑

为什么Java中的某些异常未被Caught NoSuchMethodError java.lang.NoSuchMethodError:捕获? 这是代码由于没有处理的异常而完全失败。 (Java版本1.4)。

public static void main(String[] args) {
    try {
        //Code ...
    } catch (Exception ex) {
        System.err.println("Caught Exception");
        ex.printStackTrace();
        exitCode = app.FAILURE_EXIT_CODE;
    }
    finally {
        app.shutdown();
    }
    System.exit(exitCode);
}

我得到了Caught NoSuchMethodError java.lang.NoSuchMethodError:

但这有效

public static void main(String[] args) {
    int exitCode = app.SUCCESS_EXIT_CODE;
    try {
        //Code ...
    } catch (java.lang.NoSuchMethodError mex){
        System.err.println("Caught NoSuchMethodError");
        mex.printStackTrace();
        exitCode = app.FAILURE_EXIT_CODE;
    } catch (Exception ex) {
        System.err.println("Caught Exception");
        ex.printStackTrace();
        exitCode = app.FAILURE_EXIT_CODE;
    }
    finally {
        app.shutdown();
    }
    System.exit(exitCode);
}

我得到Caught NoSuchMethodError java.lang.NoSuchMethodError:

我以为捕获异常会捕获所有异常? 如何捕获Java中的所有异常?

trans by 2020-08-04T07:04:55Z

异常处理-C ++,__ try和try / catch / finally

我想知道有关C ++ try / catch / finally块的信息。 我看过这些命令带有两个下划线,例如__try。 但是MVSC 2010项目也没有下划线。 那么什么时候需要这些下划线?

trans by 2020-08-03T03:18:54Z

java-为什么Try / Catch块会创建新的变量作用域?

例如:

try
{
    SomeObject someObject = new SomeObject();
    someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //can't access someObject!

但是您可以在try/catch块之前声明它,然后它可以正常工作:

SomeObject someObject;
try
{
    someObject = new SomeObject();
    someObject.dangerousMethod();
}
catch(Exception e)
{
}
someObject.anotherMethod(); //works fine

我只是想知道这样做的原因。 为什么在try/catch块中创建的对象不在该方法的其余部分范围内? 也许我不了解try/catch的工作原理,而只是看着Exceptions

trans by 2020-08-02T05:55:25Z

异常处理-在C ++中抛出异常后会调用析构函数吗?

我运行了一个示例程序,确实调用了堆栈分配对象的析构函数,但是标准是否可以保证?

trans by 2020-07-29T07:42:31Z

文件io-Java io ugly-finally b

有没有那么丑陋的方式来处理close()96异常以关闭两个流,然后:

    InputStream in = new FileInputStream(inputFileName);
    OutputStream out = new FileOutputStream(outputFileName);

    try {
        copy(in, out);
    } finally {
        try {
            in.close();
        } catch (Exception e) {
            try {
                // event if in.close fails, need to close the out
                out.close();
            } catch (Exception e2) {}
                throw e; // and throw the 'in' exception
            }
        }
        out.close();
    }

更新:以上所有代码都在一个try-catch中,感谢您的警告。

最后(答案之后):

而且,可以使用Execute Around惯用语来实现良好的实用方法(感谢Tom Hawtin)。

trans by 2020-07-23T20:22:45Z

为什么不能控制留下一个finally语句?

当我将return放在finally语句的块中时,编译器告诉我:

控制不能离开finally子句的主体

例:

try
{
}
catch
{
}
finally
{
    return;
}

为什么是这样?

trans by 2020-07-20T15:54:39Z

例外-如果(条件)在C ++中尝试{...}合法吗?

例如:

if (true) try
{
    // works as expected with both true and false, but is it legal?
}
catch (...)
{
    // ...
}

换句话说,将try块放在if条件之后是否合法?

trans by 2020-07-20T13:48:29Z

异常-python try:except:finally

# Open new file to write
file = None
try:
    file = open(filePath, 'w')
except IOError:
    msg = ("Unable to create file on disk.")
    file.close()
    return
finally:
    file.write("Hello World!")
    file.close()

上面的代码是从函数中提取的。 用户的系统之一正在报告以下错误:

file.write("Hello World!")

错误:

AttributeError: 'NoneType' object has no attribute 'write'

问题是,如果python无法打开给定文件,则执行“ except”块,并且必须返回,但控制权转移到抛出给定错误的行。 “文件”变量的值为“无”。

有指针吗?

trans by 2020-07-11T12:38:07Z

PowerShell尝试/捕获/最终

我最近写了一个效果很好的PowerShell脚本-但是,我现在想升级该脚本并添加一些错误检查/处理-但是我似乎很困惑。 为什么以下代码不起作用?

try {
  Remove-Item "C:\somenonexistentfolder\file.txt" -ErrorAction Stop
}

catch [System.Management.Automation.ItemNotFoundException] {
  "item not found"
}

catch {
  "any other undefined errors"
  $error[0]
}

finally {
  "Finished"
}

该错误在第二个catch块中捕获-您可以看到$error[0]的输出。显然,我想在第一个块中捕获它。 我想念什么?

trans by 2020-07-09T04:29:18Z

捕获多个自定义异常? -C ++

我是我的第一个C ++编程课程的学生,并且我正在一个项目中,我们必须创建多个自定义异常类,然后在我们的一个事件处理程序中,使用try/catch块适当地处理它们。

我的问题是:如何在try/catch块中捕获多个自定义异常? GetMessage()是我的异常类中的一个自定义方法,它以std::string的形式返回异常说明。下面,我包括了项目中的所有相关代码。

谢谢你的帮助!

尝试/捕获块


    // This is in one of my event handlers, newEnd is a wxTextCtrl
try {
    first.ValidateData();
    newEndT = first.ComputeEndTime();
    *newEnd << newEndT;
}
catch (// don't know what do to here) {
    wxMessageBox(_(e.GetMessage()), 
                 _("Something Went Wrong!"),
                 wxOK | wxICON_INFORMATION, this);;
}

ValidateData()方法


void Time::ValidateData()
{
    int startHours, startMins, endHours, endMins;

    startHours = startTime / MINUTES_TO_HOURS;
    startMins = startTime % MINUTES_TO_HOURS;
    endHours = endTime / MINUTES_TO_HOURS;
    endMins = endTime % MINUTES_TO_HOURS;

    if (!(startHours <= HOURS_MAX && startHours >= HOURS_MIN))
        throw new HourOutOfRangeException("Beginning Time Hour Out of Range!");
    if (!(endHours <= HOURS_MAX && endHours >= HOURS_MIN))
        throw new HourOutOfRangeException("Ending Time Hour Out of Range!");
    if (!(startMins <= MINUTE_MAX && startMins >= MINUTE_MIN))
        throw new MinuteOutOfRangeException("Starting Time Minute Out of    Range!");
    if (!(endMins <= MINUTE_MAX && endMins >= MINUTE_MIN))
        throw new MinuteOutOfRangeException("Ending Time Minute Out of Range!");
    if(!(timeDifference <= P_MAX && timeDifference >= P_MIN))
        throw new PercentageOutOfRangeException("Percentage Change Out of Range!");
    if (!(startTime < endTime))
        throw new StartEndException("Start Time Cannot Be Less Than End Time!");
}

只是我的一个自定义异常类,其他的具有与此结构相同的结构


class HourOutOfRangeException
{
public:
        // param constructor
        // initializes message to passed paramater
        // preconditions - param will be a string
        // postconditions - message will be initialized
        // params a string
        // no return type
        HourOutOfRangeException(string pMessage) : message(pMessage) {}
        // GetMessage is getter for var message
        // params none
        // preconditions - none
        // postconditions - none
        // returns string
        string GetMessage() { return message; }
        // destructor
        ~HourOutOfRangeException() {}
private:
        string message;
};
trans by 2020-07-01T12:07:38Z

sql server-sql try / catch rollback / commit-防止在rollb之后错误提交

我正在尝试编写具有事务和try / catch块的MS sql脚本。 如果捕获到异常,则事务将回滚。 如果不是,则提交事务。 我看过几个不同的网站说要这样做:

begin transaction
begin try
    --main content of script here
end try
begin catch
    rollback transaction
end catch

commit transaction

但是,即使在捕获异常的情况下,我们仍然不会达到“提交交易”行吗? 因为事务已经回滚,这不会导致SQL错误吗? 我认为应该这样做:

declare @success bit = 1

begin transaction
begin try
    --main content of script here
end try
begin catch
    rollback transaction
    set @success = 0
end catch

if(@success = 1)
begin
    commit transaction
end

通常发布的解决方案如何不包含@success变量? 提交已回滚的事务是否没有发生SQL错误? 我在说第一个代码示例的“提交事务”行在捕获异常的情况下仍然会被打错,这是不对的吗?

trans by 2020-07-01T09:59:46Z

尝试捕获-为什么在Swift中“ throws”类型不安全?

在Swift中,对我最大的误解是throws关键字。 考虑以下代码:

func myUsefulFunction() throws

我们真的无法理解它将引发什么样的错误。 我们唯一知道的是它可能会引发一些错误。 理解错误的唯一方法是查看文档或在运行时检查错误。

但这不符合Swift的本性吗? Swift具有强大的泛型和类型系统来使代码更具表现力,但是它看起来像2942043656158708708736完全相反,因为您无法通过查看函数签名来获得有关错误的任何信息。

为什么呢? 还是我错过了重要的事情而误解了这个概念?

trans by 2020-06-27T22:33:06Z

CodeGo.net>如果在using语句中发生异常,对象是否仍被处置?

如果在using语句中发生异常,该对象是否还会被处置?

我问的原因是因为我试图决定是尝试在整个代码块中还是在内部using语句中进行尝试。 请记住,某些异常会通过设计在catch块中重新抛出。

using (SPSite spSite = new SPSite(url))
{
   // Get the Web
   using (SPWeb spWeb = spSite.OpenWeb())
   {
       // Exception occurs here
   }
}
trans by 2020-06-18T23:08:03Z

c#-try catch最终如何阻止工作?

C#中,try catch最终如何阻止工作?

因此,如果有异常,我知道它将跳到catch块,然后跳到finally块。

但是,如果没有错误,catch块将不会运行,但是finally块会运行吗?

trans by 2020-06-16T19:51:41Z

在C ++中通过指针捕获异常

我发现有三种捕获异常的方法,有什么区别?

1)抓住价值;

2)通过引用捕获;

3)被指针抓住;

我只知道按值捕获将调用该对象的两个副本,按引用捕获将调用一个对象。 那么指针捕获又如何呢? 何时使用指针捕获? 除了抛出一个对象,我还能抛出一个指向这样的对象的指针吗?

class A {}

void f() {

  A *p = new A();
        throw p;


}
trans by 2020-02-29T14:51:10Z

javascript-使用Async / Await正确尝试...捕获语法

我喜欢Typescript等中提供的新try功能的平坦性。但是,我不确定我是否喜欢这样一个事实,我必须在try...catch块的外部声明变量I createdUsering以便以后使用。 。 像这样:

let createdUser
try {
    createdUser = await this.User.create(userInfo)
} catch (error) {
    console.error(error)
}

console.log(createdUser)
// business
// logic
// goes
// here

如果我错了,请纠正我,但是似乎最好的做法是不要在try968主体中放置多行业务逻辑,因此我只剩下在块外声明2754650245123539539969并将其分配到块中的选择 ,然后再使用它。

在这种情况下,最佳做法是什么?

trans by 2020-02-19T15:54:24Z

java-将Try-Catch与资源一起使用时,IntelliJ IDE提供错误

我正在尝试使用JDK 7的“尝试捕获资源”语句; IntelliJ强调了我的资源线,

此语言级别不支持尝试资源。

当我尝试编译时,我得到:

java:-source 1.6不支持try-with-resources    (使用-source 7或更高版本来启用try-with-resources)

我检查了是否为当前项目启用了try-with-resources,并且我的项目正在使用JDK 7(库:C:\ Program Files \ Java \ jdk1.7.0_11)。 有任何想法吗? 我不知道要更改什么选项(即使那是问题)。

trans by 2020-02-10T10:22:49Z

异常-Java-在try / catch中进行try / catch是不好的做法吗?

如果发生异常,我有一些代码要执行。 但是该代码也可以生成异常。 但是我从未见过人们在另一个try / catch中进行try / catch。

我正在做的练习很差,也许有更好的方法可以做到这一点:

 Uri uri = Uri.parse("some url");
 Intent intent = new Intent(Intent.ACTION_VIEW, uri);

 try 
 {
     startActivity(intent);
 } 
 catch (ActivityNotFoundException anfe) 
 {
     // Make some alert to me

     // Now try to redirect them to the web version:
     Uri weburi = Uri.parse("some url");
     try
     {
         Intent webintent = new Intent(Intent.ACTION_VIEW, weburi);
         startActivity(webintent);
     }
     catch ( Exception e )
     {
         // Make some alert to me                        
     }
 }

看起来有点尴尬。 有什么问题吗?

trans by 2020-02-08T22:49:33Z

1 2 3 4 下一页 共4页