try catch scope

Wes James <>
Tue Jun 29 23:21:12 CEST 2010


What is the scope of try/catch.

I changed the code:

has_query(A) ->
		case length(yaws_api:parse_query(A)) of
			0  -> false;
			_ -> true
		end.
to this

has_query(A) ->
	try
		case length(yaws_api:parse_query(A)) of
			0  -> false;
			_ -> true
		end
	catch
		_ -> false
	end.


because if a user puts in an invalid character in the URL it crashes
parse_query and I want the app to continue without erroring out in the
browser.

Is this because of the level of the error?

For instance if you have the url http://localhost/app?var1=foo1%var2=foo2

in parse_query it tries to do a list_to_integer of "va" with var2
based on how it parses the args list and you can't do that since "va"
doesn't produce a valid integer.  Would the try need to be at the
level of the list_to_integer call?

thx,

-wes


More information about the erlang-questions mailing list