What is wrong with using a bare 'except'? [duplicate]












8
















This question already has an answer here:




  • About catching ANY exception

    8 answers




I tried making a function to check if an image is displayed on the screen using PyAutoGui and came up with this:



def check_image_on_screen(image):
try:
pyautogui.locateCenterOnScreen(image)
return True
except:
return False


And it works fine, but PyCharm tells me I shouldn't leave except bare. What is the problem with leaving it like this? Is there a more appropriate way of creating the same function?










share|improve this question









New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











marked as duplicate by jamesdlin, Christian Dean python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
9 hours ago


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















  • See also stackoverflow.com/q/4990718/20670

    – Tim Pietzcker
    13 hours ago











  • Wikipedia has some good information on this--it's called error hiding.

    – John Szakmeister
    13 hours ago











  • I'm not sure this is a duplicate of that. This is asking "Why not bare except" while that one is asking "How do I bare except." A good answer for the latter probably answers the former, but that doth not a duplicate make.

    – Adam Smith
    13 hours ago
















8
















This question already has an answer here:




  • About catching ANY exception

    8 answers




I tried making a function to check if an image is displayed on the screen using PyAutoGui and came up with this:



def check_image_on_screen(image):
try:
pyautogui.locateCenterOnScreen(image)
return True
except:
return False


And it works fine, but PyCharm tells me I shouldn't leave except bare. What is the problem with leaving it like this? Is there a more appropriate way of creating the same function?










share|improve this question









New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











marked as duplicate by jamesdlin, Christian Dean python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
9 hours ago


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.



















  • See also stackoverflow.com/q/4990718/20670

    – Tim Pietzcker
    13 hours ago











  • Wikipedia has some good information on this--it's called error hiding.

    – John Szakmeister
    13 hours ago











  • I'm not sure this is a duplicate of that. This is asking "Why not bare except" while that one is asking "How do I bare except." A good answer for the latter probably answers the former, but that doth not a duplicate make.

    – Adam Smith
    13 hours ago














8












8








8









This question already has an answer here:




  • About catching ANY exception

    8 answers




I tried making a function to check if an image is displayed on the screen using PyAutoGui and came up with this:



def check_image_on_screen(image):
try:
pyautogui.locateCenterOnScreen(image)
return True
except:
return False


And it works fine, but PyCharm tells me I shouldn't leave except bare. What is the problem with leaving it like this? Is there a more appropriate way of creating the same function?










share|improve this question









New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.













This question already has an answer here:




  • About catching ANY exception

    8 answers




I tried making a function to check if an image is displayed on the screen using PyAutoGui and came up with this:



def check_image_on_screen(image):
try:
pyautogui.locateCenterOnScreen(image)
return True
except:
return False


And it works fine, but PyCharm tells me I shouldn't leave except bare. What is the problem with leaving it like this? Is there a more appropriate way of creating the same function?





This question already has an answer here:




  • About catching ANY exception

    8 answers








python pyautogui except bare






share|improve this question









New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 9 hours ago









Peter Mortensen

13.7k1986112




13.7k1986112






New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 13 hours ago









CaioRamaglioCaioRamaglio

411




411




New contributor




CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






CaioRamaglio is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




marked as duplicate by jamesdlin, Christian Dean python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
9 hours ago


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









marked as duplicate by jamesdlin, Christian Dean python
Users with the  python badge can single-handedly close python questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
9 hours ago


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.















  • See also stackoverflow.com/q/4990718/20670

    – Tim Pietzcker
    13 hours ago











  • Wikipedia has some good information on this--it's called error hiding.

    – John Szakmeister
    13 hours ago











  • I'm not sure this is a duplicate of that. This is asking "Why not bare except" while that one is asking "How do I bare except." A good answer for the latter probably answers the former, but that doth not a duplicate make.

    – Adam Smith
    13 hours ago



















  • See also stackoverflow.com/q/4990718/20670

    – Tim Pietzcker
    13 hours ago











  • Wikipedia has some good information on this--it's called error hiding.

    – John Szakmeister
    13 hours ago











  • I'm not sure this is a duplicate of that. This is asking "Why not bare except" while that one is asking "How do I bare except." A good answer for the latter probably answers the former, but that doth not a duplicate make.

    – Adam Smith
    13 hours ago

















See also stackoverflow.com/q/4990718/20670

– Tim Pietzcker
13 hours ago





See also stackoverflow.com/q/4990718/20670

– Tim Pietzcker
13 hours ago













Wikipedia has some good information on this--it's called error hiding.

– John Szakmeister
13 hours ago





Wikipedia has some good information on this--it's called error hiding.

– John Szakmeister
13 hours ago













I'm not sure this is a duplicate of that. This is asking "Why not bare except" while that one is asking "How do I bare except." A good answer for the latter probably answers the former, but that doth not a duplicate make.

– Adam Smith
13 hours ago





I'm not sure this is a duplicate of that. This is asking "Why not bare except" while that one is asking "How do I bare except." A good answer for the latter probably answers the former, but that doth not a duplicate make.

– Adam Smith
13 hours ago












2 Answers
2






active

oldest

votes


















14














Bare except will catch exceptions you almost certainly don't want to catch, including KeyboardInterrupt (the user hitting Ctrl+C) and Python-raised errors like SystemExit



If you don't have a specific exception you're expecting, at least except Exception, which is the base type for all "Regular" exceptions.





That being said: you use except blocks to recover from known failure states. An unknown failure state is usually irrecoverable, and it is proper behavior to fatally exit in those states, which is what the Python interpreter does naturally with an uncaught exception.



Catch everything you know how to handle, and let the rest propagate up the call stack to see if something else can handle it. In this case the error you're expecting (per the docs) is pyautogui.ImageNotFoundException






share|improve this answer































    1














    Basically, you're not taking advantage of the language to help you find problems. If you used except Exception as ex: you could do something like log the exception and know exactly what happened.






    share|improve this answer






























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      14














      Bare except will catch exceptions you almost certainly don't want to catch, including KeyboardInterrupt (the user hitting Ctrl+C) and Python-raised errors like SystemExit



      If you don't have a specific exception you're expecting, at least except Exception, which is the base type for all "Regular" exceptions.





      That being said: you use except blocks to recover from known failure states. An unknown failure state is usually irrecoverable, and it is proper behavior to fatally exit in those states, which is what the Python interpreter does naturally with an uncaught exception.



      Catch everything you know how to handle, and let the rest propagate up the call stack to see if something else can handle it. In this case the error you're expecting (per the docs) is pyautogui.ImageNotFoundException






      share|improve this answer




























        14














        Bare except will catch exceptions you almost certainly don't want to catch, including KeyboardInterrupt (the user hitting Ctrl+C) and Python-raised errors like SystemExit



        If you don't have a specific exception you're expecting, at least except Exception, which is the base type for all "Regular" exceptions.





        That being said: you use except blocks to recover from known failure states. An unknown failure state is usually irrecoverable, and it is proper behavior to fatally exit in those states, which is what the Python interpreter does naturally with an uncaught exception.



        Catch everything you know how to handle, and let the rest propagate up the call stack to see if something else can handle it. In this case the error you're expecting (per the docs) is pyautogui.ImageNotFoundException






        share|improve this answer


























          14












          14








          14







          Bare except will catch exceptions you almost certainly don't want to catch, including KeyboardInterrupt (the user hitting Ctrl+C) and Python-raised errors like SystemExit



          If you don't have a specific exception you're expecting, at least except Exception, which is the base type for all "Regular" exceptions.





          That being said: you use except blocks to recover from known failure states. An unknown failure state is usually irrecoverable, and it is proper behavior to fatally exit in those states, which is what the Python interpreter does naturally with an uncaught exception.



          Catch everything you know how to handle, and let the rest propagate up the call stack to see if something else can handle it. In this case the error you're expecting (per the docs) is pyautogui.ImageNotFoundException






          share|improve this answer













          Bare except will catch exceptions you almost certainly don't want to catch, including KeyboardInterrupt (the user hitting Ctrl+C) and Python-raised errors like SystemExit



          If you don't have a specific exception you're expecting, at least except Exception, which is the base type for all "Regular" exceptions.





          That being said: you use except blocks to recover from known failure states. An unknown failure state is usually irrecoverable, and it is proper behavior to fatally exit in those states, which is what the Python interpreter does naturally with an uncaught exception.



          Catch everything you know how to handle, and let the rest propagate up the call stack to see if something else can handle it. In this case the error you're expecting (per the docs) is pyautogui.ImageNotFoundException







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 13 hours ago









          Adam SmithAdam Smith

          34.5k53276




          34.5k53276

























              1














              Basically, you're not taking advantage of the language to help you find problems. If you used except Exception as ex: you could do something like log the exception and know exactly what happened.






              share|improve this answer




























                1














                Basically, you're not taking advantage of the language to help you find problems. If you used except Exception as ex: you could do something like log the exception and know exactly what happened.






                share|improve this answer


























                  1












                  1








                  1







                  Basically, you're not taking advantage of the language to help you find problems. If you used except Exception as ex: you could do something like log the exception and know exactly what happened.






                  share|improve this answer













                  Basically, you're not taking advantage of the language to help you find problems. If you used except Exception as ex: you could do something like log the exception and know exactly what happened.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 13 hours ago









                  Charlie MartinCharlie Martin

                  91.7k18165242




                  91.7k18165242















                      Popular posts from this blog

                      "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

                      Alcedinidae

                      Origin of the phrase “under your belt”?