ASP error handling

zhaozj2021-02-16  53

Author: Flying Popularity: 4409

Brief introduction ASP is very simple, so that many developers do not think about incorrectly. Error handling makes your application more reasonable. I have seen many business websites written in ASP, most of them ignore the error handling. There are three main error types:

Compilation error: This error occurs generally the syntax problem of the code. Because the compilation is wrong and the ASP stops running. Running error This error occurs when you are ready to run the ASP. For example: If you try to assign a variable, it exceeds the range allowed by this variable. Logical error logic errors are the most difficult, this error is often a structural error, and the computer is not found. This requires us to completely check our code correctly. Because compiling errors are generally occurring with logical errors, we can generally display it, so we are worried that just run errors. It terminates the operation of the ASP, and gives users a pile of unfriendly text. So how do we have to handle running errors! ? Let's take a look at the only error command to provide us - On Error ResMe next (here alerting beginners, only the ON Error Resume next statement in the ASP, no on error resume goto statement) If you don't use on If the ERROR RESUME NEXT statement, everything will happen, this is fatal, then there will be a paragraph code "show" to the user, and the ASP program will stop. Below is an error code:

Microsoft OLE DB Provider for ODBC Drivers Error 80004005

[Microsoft] [ODBC Driver Manager] Data Source Name NOT Found and No Default Driver Specified

/TEST.ASP, LINE 60

When we use the ON Error Resume next statement on the program, all errors are ignored and the program will automatically perform the next statement. This makes it fully executed, and the user will not see the error message after the error. But there is a bad place, that is if the program does not follow your imagination, you will be difficult to find out where there is a problem, so you have to handle the error in the necessary place. Handling errors In ASP, the best way to handle errors is to process errors in the bottom of the program. I also recommend that all ASP programs use buffers. In this case, if the error occurs, the page will stop, the page content will be cleared, so the user will not see the error message, which is less for your complaint! Below is an example:

<% @ Language = "VBScript"%>

<% 'Set buffer for true

Response.buffer = TRUE

'Start error handling

ON Error ResMe next

%>

<% 'Error handling

IF Err.Number <> 0 THEN

'Clear page

Response.clear

'Display error message to user%>

</ title></p> <p></ HEAD></p> <p><Body bgcolor = "# c0c0c0"></p> <p><Font face = "arial"> an error Occurred in The Execution of this ASP Page <br></p> <p>Please report the following information to the support desk <p> <b> Page error Object </ b> <br></p> <p>Error Number: <% = err.number%> <br></p> <p>Error message: <% = err.description%> <br></p> <p>Error file: <% = Err.Source%> <br></p> <p>Row: <% = err.line%> <br></p> <p></ Font></p> <p></ Body></p> <p></ Html></p> <p><% End if%></p> <p>I saw it above, I first set the ON Error Resume next, so that there is no error that does not affect the execution of the program. Error handling and database execution of the database in error handling are complex. If we have a program, there are many commands to add a record to the database. If INSERT / UPDATE executes in the bottom of the program, if we happen in front of us, it is over! We will add an error to the database. Because we used the error in Error Resume next, it was ignored! Even if the previous error, the program still adds data to the database. In order to avoid this, we must first do some hands and feet, the method of correctly processing is as follows:</p> <p>If Err.Number = 0 and Objconnection.errors.count = 0 THEN</p> <p>'Here you can perform a statement because there is no error</p> <p>Set rstresults = dbdata.execute (txtsql)</p> <p>END IF</p> <p>More advanced processing Measures When an error occurs, you can also display more error messages. Below is an example in handling databases and page errors, with it, we can find all errors in our program. (Since some places I think English is more problematic, there is no translation).</p> <p><%</p> <p>IF Err.Number <> 0 THEN</p> <p>Response.clear</p> <p>Select Case Err.NUMBER</p> <p>Case 8 'Specifies the wrong Number</p> <p>'Handling custom error here</p> <p>Case Else 'General errors</p> <p>IF isobject (objconnection) THEN</p> <p>IF Objconnection.errors.count> 0 THEN</p> <p>%></p> <p><B> Database Connection Object </ b></p> <p><% For intloop = 0 to objconnection.errors.count - 1%></p> <p>Error NO: <% = Objconnection.errors (Intloop) .Number%> <br></p> <p>Description: <% = Objconnection.erroS (INTLOOP) .description%> <br></p> <p>Source: <% = Objconnection.errors (intloop). Source%> <br></p> <p>SqlState: <% = objconnection.erroS (INTLOOP) .sqlstate%> <br></p> <p>NativeError: <% = objconnection.errors (intloop) .nativeerror> <p> <% next</p> <p>END IF</p> <p>END IF</p> <p>IF Err.Number <> 0 THEN</p> <p>%></p> <p><B> Page Error Object </ b> <br></p> <p>Error Number <% = Err.Number%> <br></p> <p>Error Description <% = Err.Description%> <br></p> <p>Source <% = Err.Source%> <br></p> <p>LINENUMBER <% = err.line%> <p></p> <p><% End if</p> <p>End SELECT</p> <p>END IF</p> <p>%></p> <p>The above example made us handled a lot of problems that occur in the database, this is often used in our daily programming! We should also see that SELECT CASE statement that allows us to handle specific errors. REDIRECT and error handling have a little more, it is to pay attention to our usual redirect object. If a redirect object appears in a page, then the error handles lose meaning. So we have to handle it before turning, as follows:</p> <p>If Err.Number = 0 and Objconnection.errors.count = 0 THEN</p> <p>Response.clear</p> <p>Response.Redirect? Lt; url here>?</p> <p>END IF</p> <p>Bringing the code more neat in order to make the code more neatly, first put the error handled file in an included file. This way you can use it in any file. This is also convenient to modify it.</p> <p>Join the top of your program (Of course, after the language declaration) The ON Error Resume next statement. Check before you perform SQL. Error processing should also be conducted before using Redirect. Let you handle the wrong containment file on the top of the code</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-24347.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="24347" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.049</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'UGIdvPVPty0tAJdkEVilXFjTqL_2FoZELbJMApIZP7BcQ5_2BcO_2F89CtFjmsZq7p9EFEPvn4cHE7if5W5ziE'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>