<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 3, 2014 at 12:54 PM, Glynn Clements <span dir="ltr"><<a href="mailto:glynn@gclements.plus.com" target="_blank">glynn@gclements.plus.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=""><br>
Vaclav Petras wrote:<br>
<br>
> > > The issue is this:<br>
> > ><br>
> > > GRASS 7.1.svn (nc_spm_08_grass7):~ > g.region rast=lsat7_2002_30<br>
> > > GRASS 7.1.svn (nc_spm_08_grass7):~ > d.correlate<br>
> > map=lsat7_2002_30,lsat7_2002_40<br>
> > > ERROR: No graphics device selected. Use d.mon to select graphics device.<br>
> > > Traceback (most recent call last):<br>
> > > ...<br>
> > > grass.exceptions.CalledModuleError: Module run None ['d.text',<br>
> > > 'color=black', 'line=1', 'stdin=CORRELATION', 'size=4'] ended with<br>
> > > error<br>
> > > Process ended with non-zero return code 1. See errors in the (error)<br>
> > output.<br>
> ><br>
> > I can't reproduce the problem. And I'm not even sure how d.text can<br>
> > exit with a non-zero return code without printing any error message.<br>
><br>
><br>
> I can reproduce it. Are you sure you don't have MONITOR or<br>
> GRASS_RENDER_IMMEDIATE (or any other if it matters) set? I start GRASS<br>
> session (without any special shell environment) and I get it.<br>
><br>
> The error is the beginning, r.text is printed first (that's ERROR:... I<br>
> think), then the error from the main process is printed (Traceback....).<br>
<br>
</span>Er, right; I got confused by the fact that the script changes used<br>
exactly the same error message as d.text (which is a leftover from<br>
6.x).<br>
<br>
The issue has been fixed in r63361. The issue was first introduced in<br>
r46984 and incorrectly "fixed" in r46999.<br>
<br>
In GRASS 7, it isn't (or shouldn't have been) necessary to set<br>
GRASS_RENDER_IMMEDIATE. This variable only exists to choose a driver<br>
other than the default (cairo if supported, otherwise PNG).<br>
<span class=""><br>
> I think the solution is try-except or calling the function(s) with with<br>
> secret `errors` parameter set to 'exit'.<br>
<br>
</span>No. There's no point in catching exceptions if you aren't going to<br>
handle them.</blockquote><div><br>I agree. If it is not probable that the module will fail, I think you don't have 
to do try-except. In case of error you get the traceback which is great 
because it will help you identify the problem (and for example handle the errors in a better way if the original premise about error not being probable was wrong). But it also depends on what you call handling.<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If we want to avoid the tracebacks, we should find a<br>
solution which works globally,</blockquote><div><br>I'm not sure if we want to avoid tracebacks because hiding traceback does not mean that the error is not there and you might be just loosing valuable info about the place of the error. However, we have already set_raise_on_error(), so this would be similar.<br><br></div><div>But I'm convinced that exceptions (and tracebacks) are good default because this is how Python works and it provides the largest amount of information.<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">not require each and every script to<br>
manually handle exceptions from each and every called module.<br>
<span class=""><font color="#888888"><br></font></span></blockquote><div>This would be bad but I think if script author wants one big try-except for several module calls I think that it is OK if a message saying what happened from the point of view of the script is provided.<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=""><font color="#888888">
--<br>
Glynn Clements <<a href="mailto:glynn@gclements.plus.com">glynn@gclements.plus.com</a>><br>
</font></span></blockquote></div><br></div></div>