Actually, I can reproduce the problem running the example locally. In my scenerio, I use an ASPX page to host the web method as follows:
MyPage.aspx.cs
[WebMethod]
public void GetData() {
throw new ArgumentException("throw exception");
}
MyPage.aspx
<script language="javascript" type="text/javascript">
function CallServer() {
PageMethods.GetData(,OnComplete, OnTimeout, OnError);
}
function OnComplete() {
alert("Complete");
}
function OnTimeout(result) {
alert(result);
}
function OnError(result) {
alert(result);
}
</script>
<!-- Call the server from a HTML button -->
<input type="button" value="Call Server" onclick="CallServer();"/>