我试图使用VC++的try-except语句将一些代码移植到MinGW:
bool success = true;
__try {
//...
} __except ((EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH) {
success = false;
_resetstkoflw();
}
return success;
Run Code Online (Sandbox Code Playgroud)
是否可以编写使用MinGW g ++捕获堆栈溢出异常的代码?
我有两个表达。我需要尝试一个表达式,如果它引发异常尝试另一个,但如果第二个也引发异常 - 引发异常。
我试过这个,但它看起来很丑,我不确定这是解决这个问题的最佳方法:
try:
image = self.images.order_by(func.random()).limit(1)
except:
try:
image = self.images.order_by(func.rand()).limit(1)
except ProgrammingError:
raise ProgrammingError(
'The database engine must be PostgtreSQL or MySQL')
Run Code Online (Sandbox Code Playgroud)
你怎么做呢?
在pycharm中调试代码时,按Ctrl + C时,我的python try / except循环似乎不会触发键盘中断。我的代码如下所示:
numbers = []
loop = True
try:
# ===========SUBROUTINES==================
def help():
print("To view the list type 'view'"
"\n To add an item type 'add'"
"\n To remove an item type 'remove'"
"\n To exit type exit or Ctrl + c can be used at any time")
# =========SUBROUTENES END===============
while loop:
task = input("What do you want to do? Type \"help\" for help:- ")
if task == 'help':
help()
else:
print("Invalid return please try …Run Code Online (Sandbox Code Playgroud) 我是 python 的新手,我即将制作这个新程序,它会问你生日。我做了一些 try/except 子句来避免人们以字符串或高数字输入信息。我希望我的程序找出输入的信息最终是否等于日期。如果是,我希望将其打印出来,如果没有,我希望它找出用户输入的哪一部分是错误的。因此,我在最后一个 except 子句中创建了一些 if 子句,其想法是错误将等于一条消息。
我想知道是否有可能让程序将消息与错误进行匹配,以找出具体的错误并找出输入的哪一部分是错误的。
我的代码如下所示:
try:
print(datetime.date(int(birthYear), int(birthMonth), int(birthDay)))
except TypeError:
if ValueError == "ValueError: month must be in 1..12":
print("Month " + str(birthMonth) + " is out of range. The month must be a number in 1...12")
if ValueError == "ValueError: year " + str(birthYear) + " is out of range":
print("Year " + str(birthMonth) + " is out of range. The year must be a number in " + str(datetime.MINYEAR) + "..." …Run Code Online (Sandbox Code Playgroud) 请问,有人可以解释一下,在这段代码中会出现什么异常?
function CreateBibleNames: TStrings;
begin
Result := TStringList.Create;
try
Result.Add('Adam');
Result.Add('Eva');
Result.Add('Kain');
Result.Add('Abel');
except
Result.Free;
raise;
end;
end;
Run Code Online (Sandbox Code Playgroud)
因为我使用delphi,所以我曾经使用过一次异常处理.我认为上面的代码是由熟练的程序员编写的,我不认为异常是多余的.但是,在这个概念中使用异常处理对我来说仍然是一个谜.它似乎是一个安全的代码(没有尝试除了结束).我已经多次看到类似这样的代码片段,这就是为什么尽管有我的经验,这可能是一个很好的理由以这种方式编写,但这并不是必要的.
此外,当事情失败时,我会得到异常描述......
感谢名单
我有一个模拟骰子卷的程序,并将它们与图表中的值(字符串列表集)进行比较.我目前从TEdit获得价值.如果该框为空,则会引发应该由我的Try/Except语句捕获的EConvertError,但事实并非如此.想法和建议?代码如下,Delphi 7.
try
//Shooting
if ShootingRadio.Checked then
BS := StrToInt(Edit1.Text);
Randomize;
Roll := RandomRange(1,7);
Label3.Caption := IntToStr(Roll);
if (Roll < StrToInt(ShootingHitChart[BS-1])) then
begin
Label3.Caption := (IntToStr(Roll)+' Miss');
RichView1.AddTextNL((IntToStr(Roll)+' Miss'),7,0,1);
RichView1.Reformat;
end
else
begin
Label3.Caption := (IntToStr(Roll)+' Hit');
RichView1.AddTextNL((IntToStr(Roll)+' Hit'),6,0,1);
RichView1.Reformat;
end;
except
MessageBox(0,'No number entered.','Error',mb_OK);
end;
Run Code Online (Sandbox Code Playgroud) 我有一段时间的麻烦error C2712: Cannot use __try in functions that require object unwinding,在缩小问题之后,我留下了一个非常非常简单的代码,我无法理解为什么它会导致这个错误.我在Windows下使用Visual Studio.
我用/ EHa编译(我不使用/ EHsc)
我使用__try/__except和不使用的原因try/catch是因为我想捕获所有错误,并且不希望程序在任何情况下崩溃,包括例如除以0,try-catch不会捕获.
#include <string>
static struct myStruct
{
static std::string foo() {return "abc";}
};
int main ()
{
myStruct::foo();
__try
{ }
__except (true)
{ }
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
error C2712: Cannot use __try in functions that require object unwinding
Run Code Online (Sandbox Code Playgroud) 我使用try/except块作为替代if/elif,有一堆ands.我正在寻找一个列表,并替换一些元素,如果它有x和x和x等.在我的项目中,我必须检查6个东西,这些吸引我使用try/exceptwith .index()将导致错误,如果元素isn不存在.
类比看起来像这样:
colors = ['red', 'blue', 'yellow', 'orange']
try:
red_index = colors.index('red')
blue_index = colors.index('blue')
colors[red_index] = 'pink'
colors[blue_index] = 'light blue'
except ValueError:
pass
try:
yellow_index = colors.index('yellow')
purple_index = colors.index('purple')
colors[yellow_index] = 'amarillo'
colors[purple_index] = 'lavender'
except ValueError:
pass
Run Code Online (Sandbox Code Playgroud)
因此,如果colors数组不包含'purple'还有'yellow',我不希望阵列,以改变.
我对这种方法有点警惕,因为它似乎是滥用try/except.但是它比替代方案要短得多,因为index无论如何我都必须抓住元素,所以我想知道这是否存在明显的问题,或者这是否足够疯狂以至于其他开发人员会讨厌它.
在Python中使用try/except块时,是否建议将其委托给可能引发异常的任何方法,或者在父函数中捕获它,或者两者兼而有之?
例如,以下哪项是首选?
def my_function():
s = something.that.might.go_wrong()
return s
def main():
try:
s = my_function()
except Exception:
print "Error"
Run Code Online (Sandbox Code Playgroud)
要么
def my_function():
try:
s = something.that.might.go_wrong()
return s
except Exception:
print "Error"
def main():
s = my_function()
Run Code Online (Sandbox Code Playgroud)
PEP 8在这个问题上似乎很安静,我似乎找到了两个案例的例子.
感觉我正在慢慢失去理智。我无法捕获 REST-API 请求中的连接错误。我在 stackoverflow 上阅读了至少 20 个类似的问题,尝试了我能想到的所有可能的 except 语句,并尽可能简化了代码以排除某些其他库。
我正在使用 Python 3.7 和请求 2.25.1。这是对我自己的服务器上的 API 的非常基本的调用,有时会失败,但只是偶尔失败一次:
try:
response = requests.get(url, headers=api_headers, auth=HTTPBasicAuth(username, password))
except requests.exceptions.ConnectionError:
print("Connection error!")
Run Code Online (Sandbox Code Playgroud)
很抱歉,我无法提供完整的工作示例,因为我没有连接到可公开访问的 API,因此我必须删除 url、用户名和密码。
即使我尝试捕获连接错误,脚本也会失败并显示以下回溯:
Traceback (most recent call last):
File "C:\Users\Tilman\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 706, in urlopen
chunked=chunked,
File "C:\Users\Tilman\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
self._validate_conn(conn)
File "C:\Users\Tilman\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
conn.connect()
File "C:\Users\Tilman\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 421, in connect
tls_in_tls=tls_in_tls,
File "C:\Users\Tilman\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 429, in ssl_wrap_socket
sock, context, tls_in_tls, server_hostname=server_hostname
File "C:\Users\Tilman\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 472, in _ssl_wrap_socket_impl …Run Code Online (Sandbox Code Playgroud) try-except ×10
python ×6
c++ ×2
delphi ×2
if-statement ×2
python-3.x ×2
datetime ×1
mingw ×1
pep8 ×1
pycharm ×1
sqlalchemy ×1
visual-c++ ×1