Try catch trouble
hi all, im quite new to java and am having a bit of trouble with a try catch statement
try
System.out.println("Enter your level: ");
level = data.nextInt();
while (!VLevel(level))
System.out.println("Enter your level: ", LEVEL);
dstfloor = read_in.nextInt();
catch(InputMismatchException exception)
System.err.println("Invalid level");
continue;
the problem i have is that when it triggers the exception, it just repeats the 'invalid level' line infinitely. any ideas?
thanks
If this line is causing an exception: dstfloor = read_in.nextInt();Then dstfloor's value will not change.
Because you are using continue in the catch, the loop will run unfinately with dstfloor having the same value.
You will need to modify the dstfloor var either in the catch or in the finally.
Edited by: Azzer_Mac on Apr 24, 2008 9:08 AM
Similar Messages
-
i need a code that will take an inputed integer and if it is negative, throw an exception and give an appropriate message, same with the case of if it is >=16.. i have a piece of code so far.. know it isnt correct.. can anyone tell me how to correct it?
// Factorials.java
// Reads integers from the user and prints the factorial of each.
import java.util.Scanner;
public class Factorials
public static void main(String[] args)throws RuntimeException
String keepGoing = "y";
Scanner scan = new Scanner(System.in);
IllegalArgumentException problem = new IllegalArgumentException ("Can not factor negative number.");
IllegalArgumentException problem2 = new IllegalArgumentException ("Arithmetic overflow");
while (keepGoing.equals("y") || keepGoing.equals("Y"))
try{
System.out.print("Enter an integer: ");
int val = scan.nextInt();
System.out.println("Factorial(" + val + ") = "
+ MathUtils.factorial(val));
catch(IllegalArgumentException exception)
if (val<0)
System.out.println(" Cannot factor negative number.");
else
System.out.println("Arithmetic overflow.");
System.out.print("Another factorial? (y/n) ");
keepGoing = scan.next();
// catch (IllegalArguementException exception)
// System.out.println("Can not factor a negative number.");
}Please use the 'code' formatting tags when posting code.
You never throw any exception. (Big hint). Instead, you print an error message. But the code could easily be modified.
- Saish -
BufferedWriter try catch Scoping problem
I developed a quick and dirty application to search through a file system for files that contain certain patterns in their names, and it works fine. My problem is I want to use a BufferedWriter to write the results out to a new text file, and a buffered writer must be enclosed in a try catch statement because of a possible IOException. Now the writer is out of scope of the method that needs to call it, and if I put it in the method a new writer and hence a new file will be created each time through. I am sure this is just a design flaw on my part but I have hit this problem before, I was wondering what is a way around this, so the writer can be instantiated, the method that will do that actual writing to the file will be called until the iteration is done, and then the program will exit.
Here is my code, there are some unused variables and objects in there, namely I am not using the BufferedWriter at the moment and was just cutting and pasting from the console:
Thanks!
import java.io.*;
import java.util.*;
public class NextAttempt {
static List<File> filelist = new ArrayList<File>();
static PrintStream out = new PrintStream(System.out);
static File f;
public static void getWriter() {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\FILE.txt"));
for(File f: filelist)
writer.append(f.getAbsolutePath());
catch (Exception e) {}
public static List<File> browse(File BASE) {
File[] temp=BASE.listFiles();
for (int i=0;i<temp.length;i++) {
if(temp.getAbsolutePath().contains(File.separator+"PATTERN")&&temp[i].getName().contains(".ext") {
out.println(temp[i].getAbsolutePath());
//filelist.add(temp[i]);
else if (temp[i].isDirectory()) {
BASE=temp[i];
rec(BASE);
else {
BASE=new File("PATH");
return filelist;
public static void rec(File BASE) {
browse(BASE);
public static void main(String[] args) {
browse(new File("PATH"));
out.println("Complete");Also you can keep passing the file lists up to the callers, so the initial invocation of browse() will return a list of all the files. When you recurse (which you're doing now, apparently), you can append the return value of the recursive call to the caller's own list of files.
Then just print the whole list when you're done.
Another thing you might want to think about... you could use the logging framework to list the files as log entries. That may or may not be useful. The advantage is that the logging code already deals with some of these issues; the disadvantage is that producing a formatted log might result in a format you can't use, or tweaking the format might be more trouble than doing something else. -
Need HELP with finally() in nested try-catch
hi,
i am having trouble with deadlock and wondering if its due to an incorrect use of finally nested within multiple try catch blocks.
is the inner finally() required, will the outer one get executed, or will the two finally() statements get executed...??
the deadlock happens very infrequently to accurately test.
try {
try {
catch (InterruptedException e) {
return;
catch {
finally {
//will this be executed be executed by the inner throw statement
}or is an inner finally required
try {
try {
catch (InterruptedException e) {
return;
//this finally is NEW....is it needed!
finally {
//will this be executed. will both get executed
catch {
finally {
//will this be executed also, or completely ignored if exception throw from inner try/catch
}inner/outer, which one is executed first?
more info pls.I mean, really. How hard is it to find out for yourself?
public class TestFinally {
public static void main(String[] args) {
try {
try {
throw new RuntimeException("Whatever");
} finally {
System.out.println("Inner finally");
} finally {
System.out.println("Outer finally");
}I'll leave it to your imagination as to how to modify this class to confirm the answers to your original question. -
How to simulate a dml error in order to test try-catch code block inside a stored procedure
Hi,
What would be the easiest way to simulate a dml error in order to test a try catch block.
I would like to do it with a simple command from outside the stored procedure if possible.
I tried dropping the table that was updated but it hangs
Thanks,
DaniDropping the table that is the target of the procedure will give you an unpleasant surprise: the CATCH block will not fire. To wit, errors like missing tables can only be caught in outer scopes, but not in the procedure where the error occurs.
But you would add a fake constraint to a table which causes the update to fail. You need to do this in advance, not while running the procedure.
Erland Sommarskog, SQL Server MVP, [email protected] -
Can't find class because of try catch block ?!
Hello,
I'm using the JNI to use a java library from my c++ code.
JNI can't find the "Comverse10" class below, but when i put the try catch block in createMessage in comment, FindClass succeeds ?!
Unfortunatly i need the code inside the try block ;-)
I tried a few things, but none of them worked:
- let createMessage throw the exception (public void createMessage throws ElementAlreadyExistsException ), so there isn't a try catch block in createMessage => result: the same
- make a "wrapper" class Comverse that has a Comverse10 object as attribute and just calls the corresponding Comverse10.function. Result: Comvers could be found, but not constructed (NewObject failed).
Can someone tell me what is going on ?!
Thank you,
Pieter.
//Comverse10 class
public class Comverse10 {
MultimediaMessage message;
/** Creates a new instance of Comverse10 */
public Comverse10() {
public void createMessage() {
TextMediaElement text1 = new TextMediaElement("Pieter");
text1.setColor(Color.blue);
SimpleSlide slide1 = new SimpleSlide();
//if i put this try catch block in comment, it works ?!
try{
slide1.add(text1);
catch(com.comverse.mms.mmspade.api.ElementAlreadyExistsException e){}
MessageContent content = new MessageContent();
content.addSlide(slide1);
this.message = new MultimediaMessage();
message.setContent(content);
message.setSubject("Mijn subjectje");
for those of you who are intersted: here's my C++ code:
//creation of JVM
HRESULT Java::CreateJavaVMdll()
HRESULT HRv = S_OK;
char classpath[1024];
jint res;
if(blog) this->oDebugLog->Printf("CreateJavaVMdll()");
strcpy(classpath,"-Djava.class.path="); /*This tells jvm that it is getting the class path*/
strcat(classpath,getenv("PATH"));
strcat(classpath,";D:\\Projects\\RingRing\\MMSComposer;C:\\Progra~1\\j2sdk1~1.1_0\\lib"); //;C:\\Comverse\\MMS_SDK\\SDK\\lib\\mail.jar;C:\\Comverse\\MMS_SDK\\SDK\\lib\\activation.jar;C:\\Comverse\\MMS_SDK\\SDK\\lib\\mmspade.jar
//------Set Options for virtual machine
options[0].optionString = "-Djava.compiler=NONE"; //JIT compiler
options[1].optionString = classpath; //CLASSPATH
//------Set argument structure components
vm_args.options = options;
vm_args.nOptions = 2;
vm_args.ignoreUnrecognized = JNI_TRUE;
vm_args.version = JNI_VERSION_1_4;
/* Win32 version */
HINSTANCE hVM = LoadLibrary("C:\\Program Files\\j2sdk1.4.1_01\\jre\\bin\\client\\jvm.dll");
if (hVM == NULL){
if(blog) oDebugLog->Printf("Can't load jvm.dll");
return E_FAIL;
if(blog) oDebugLog->Printf("jvm.dll loaded\n");
LPFNDLLFUNC1 func = (LPFNDLLFUNC1)GetProcAddress(hVM, "JNI_CreateJavaVM");
if(!func){
if(blog) oDebugLog->Printf("Can't get ProcAddress of JNI_CreateJavaVM");
FreeLibrary(hVM); hVM = NULL;
return E_FAIL;
if(blog) oDebugLog->Printf("ProcAddress found");
res = func(&jvm,(void**)&env,&vm_args);
if (res < 0) {
if(blog) oDebugLog->Printf("Can't create JVM with JNI_CreateJavaVM %d\n",res);
return E_FAIL;
if(blog) oDebugLog->Printf("JVM created");
return HRv;
//finding Comverse10 class:
HRESULT CALLAS MMSComposer::InitializeJNI(void)
HRESULT HRv=E_FAIL;
DWORD T=0;
try
if(blog) oDebugLog->Printf("\nInitializeJNI()");
bJVM = FALSE;
jni = new Java(oDebugLog);
if(jni->CreateJavaVMdll()!=S_OK){
if(blog) oDebugLog->Printf("CreateJavaVMdll() failed");
return HRv;
jclass jcls = jni->env->FindClass("Comverse10");
if (jcls == 0) {
if(blog) oDebugLog->Printf("Can't find Comverse10 class");
jclass jcls2 = jni->env->FindClass("test");
if (jcls2 == 0) {
if(blog) oDebugLog->Printf("Can't find test class");
return HRv;
if(blog) oDebugLog->Printf("test class found %08x",jcls2);
return HRv;
if(blog) oDebugLog->Printf("Comverse10 class found %08x",jcls);
jmethodID mid = jni->env->GetMethodID(jcls , "<init>", "()V");
if (mid == 0) {
if(blog) oDebugLog->Printf("Can't find Comverse10() constructor");
return HRv;
if(blog) oDebugLog->Printf("Comverse10() constructor found");
jobject jobj = jni->env->NewObject(jcls,mid);
if(jobj==0)
if(blog) oDebugLog->Printf("Can't construct a Comverse10 object");
return HRv;
if(blog) oDebugLog->Printf("Comverse10 object constucted");
//Create Global reference, so java garbage collector won't delete it
jni->jobj_comv = jni->env->NewGlobalRef(jobj);
if(jni->jobj_comv==0)
if(blog) oDebugLog->Printf("Can't create global reference to Comverse10 object");
return HRv;
if(blog) oDebugLog->Printf("global reference to Comverse10 object %08x created",jni->jobj_comv);
bJVM=TRUE;
HRv=S_OK;
} catch( IDB * bgError ) { throw bgError->ErrorTrace("InitializeJNI::~InitializeJNI",HRv, 0, T); }
catch(...) { throw IDB::NewErrorTrace("InitializeJNI::~InitializeJNI",HRv, 0, T ); }
return HRv;>
I would guess that the real problem is that that the
exception you are catching is not in the class path
that you are defining.Thanks jschell, that was indeed the case.
I don't have the docs, but I would guess that
FindClass() only returns null if an exception is
thrown. And you are not checking for the exception.
Which would tell you the problem.Ok, i'll remember that. But what with exceptions thrown in my java code, the documents say
// jthrowable ExceptionOccurred(JNIEnv *env);
// Determines if an exception is being thrown. The exception stays being thrown until either the native code calls ExceptionClear(), or the Java code handles the exception
so, what if the java code throws an exception and catches it, will i be able to see that in my c++ code with ExceptionOccurred ?
or
should the java method be declared to throw the exception (and not catch it inside the method)
Again, thank you for your help, it's greatly appreciated ! -
How to get the returned error messages in the Try/Catch block in DS 3.0?
A customer sent me the following questions when he tried to implement custom error handling in DS 3.0. I could only find the function "smtp_to" can return the last few lines of trace or error log file but this is not what he wants. Does anyone know the answers? Thanks!
I am trying to implement the Try/Catch for error handling, but I have
hard time to get the return the msg from DI, so I can write it to out
custom log table.
Can you tell me or point me to sample code that can do this, also, can
you tell me which tables capture these info if I want to query it from
DI system tablesHi Larry,
In Data Services XI 3.1 (GAd yesterday) we made several enhancements for our Try/Catch blocks. One of them is the additional of functions to get details on the error that was catched :
- error_message() Returns the error message of the caught exception
- error_number() Returns the error number of the caught exception
- error_timestamp() Returns the timestamp of the caught exception.
- error_context() Returns the context of the caught exception. For example, "|Session Datapreview_job|Dataflow debug_DataFlow|Transform Debug"
In previous versions, the only thing you could do was in the mail_to function specify the number of lines you want to include from the error_log, which would send the error_log details in the body of the mail.
Thanks,
Ben. -
Can we have try/catch in a static block in a class?
hi All
i have a question about put a try/catch block in a static block in a class to catch exceptions that maybe thrown from using System.xxxx(). in my custom class, i have a static block to initialize some variables using System.xxx(). in case of any error/exception, i need to be able to catch it and let the caller know about it. i tried to put a try/catch block in the static block, and tried to rethrow the exception. but it is not allowed, how would i handle situation like this? thanks for your help and advise in advance.You could just swallow the exception inside try/catch
block, and instead of throwing it out, just set a
static variable to allow checking from outside
whether the initialization succeeded, or check within
the constructor / methods of this class for
successful initialization, and throw the exception
then. You could even save that exception in a static
variable for later.Ouch, ouch, you're hurting my brain. This would allow someone to ignore a (presumably) fatal error. Throw a RuntimeException as indicated. You can wrap a checked exception in an unchecked one if need be. -
RAISERROR with Try/Catch does not exit after exception in catch block
I am trying to propogate an error from within my proc out to the caller.
In the attached example I have 2 sets of try catch blocks.
I raiserror in the first
catch the error and then raiserror again. (I expect to exit)
I do not expect :
to get to print 'post test'
to get to second try block.
but this does not exit, instead the code flows as per 2 runs.
I do not understand the reason for the flows, as it seems counterintuitive to be raising an error but then still print following exceptions. I cannot seem to find any references that explains this behaviour.
running tests together results
print '-------------------------------------------------------'
print 'test 15'
exec test_raiseerror 15
print '-------------------------------------------------------'
print 'test 16'
exec test_raiseerror 16
print '-------------------------------------------------------'
print 'test 17'
exec test_raiseerror 17
print '-------------------------------------------------------'
print 'test 18'
exec test_raiseerror 18
print '-------------------------------------------------------'
'RESULTS'
test 15
error number provided: 15
Msg 50000, Level 15, State 1, Procedure test_raiseerror, Line 21
name hello 15
post test
15
Msg 50000, Level 15, State 1, Procedure test_raiseerror, Line 37
name hello 2 15
post test2
test 16
error number provided: 16
Msg 50000, Level 16, State 1, Procedure test_raiseerror, Line 21
name hello 16
post test
16
Msg 50000, Level 16, State 1, Procedure test_raiseerror, Line 37
name hello 2 16
post test2
test 17
error number provided: 17
post test
17
post test2
test 18
error number provided: 18
post test
18
post test2
Msg 50000, Level 17, State 1, Procedure test_raiseerror, Line 21
name hello 17
Msg 50000, Level 17, State 1, Procedure test_raiseerror, Line 37
name hello 2 17
Msg 50000, Level 18, State 1, Procedure test_raiseerror, Line 21
name hello 18
Msg 50000, Level 18, State 1, Procedure test_raiseerror, Line 37
name hello 2 18
run tests seperately
exec test_raiseerror 15
error number provided: 15
RESULTS 15
Msg 50000, Level 15, State 1, Procedure test_raiseerror, Line 21
name hello 15
post test
15
Msg 50000, Level 15, State 1, Procedure test_raiseerror, Line 37
name hello 2 15
post test2
exec test_raiseerror 16
RESULTS 16
error number provided: 16
Msg 50000, Level 16, State 1, Procedure test_raiseerror, Line 21
name hello 16
post test
16
Msg 50000, Level 16, State 1, Procedure test_raiseerror, Line 37
name hello 2 16
post test2
exec test_raiseerror 17
RESULTS 17
error number provided: 17
post test
17
post test2
Msg 50000, Level 17, State 1, Procedure test_raiseerror, Line 21
name hello 17
Msg 50000, Level 17, State 1, Procedure test_raiseerror, Line 37
name hello 2 17
exec test_raiseerror 18
RESULTS 18
error number provided: 18
post test
18
post test2
Msg 50000, Level 18, State 1, Procedure test_raiseerror, Line 21
name hello 18
Msg 50000, Level 18, State 1, Procedure test_raiseerror, Line 37
name hello 2 18
CODEBLOCK:
if object_id('test_raiseerror','P') is not null
drop proc test_raiseerror
go
create proc test_raiseerror(@id as int) as
begin
begin try
declare @name varchar(20)
select @name = 'hello'
raiserror('name %s %d',@id,1,@name,@id)
print 'next'
end try
begin catch
declare @errormessage nvarchar(4000)
declare @errornum int
select @errormessage = error_message()
, @errornum = error_severity()
print 'error number provided: ' + convert(varchar(2),@errornum)
raiserror(@errormessage, @errornum,1)
print 'post test'
end catch
begin try
select @name = 'hello 2'
raiserror('name %s %d', @id,1,@name, @id)
end try
begin catch
select @errormessage = error_message()
, @errornum = error_severity()
print @errornum
raiserror(@errormessage, @errornum,1)
print 'post test2'
end catch
end
go
sqlserver 2008 & 2008 R2There is a Connect that describes a similiar complaint. But basically a raiserror inside a catch block does not terminate the procedure, it will continue with any additional code in the CATCH and FINALLY unless it hits a return statement.
http://connect.microsoft.com/SQLServer/feedback/details/275308/have-raiserror-work-with-xact-abort -
Exception handling with try/catch in acrobat
Hi
I have a problem using a try/catch block in my acrobat document-script. Try to enter the following into the debugger-console:
try{nonexistentFunction();}catch(e){console.println('\nacrobat can't catch')}
and run it. The output will be:
nonexistentFunction is not defined
1:Console:Exec
acrobat can't catch
true
The whole point of a rty/catch block is for the application NOT to throw an exception, but instead execute the catch-part of the statement. However, acrobat does both: It throws an exception AND executes the catch-block.
Is there another way to suppress the exception, or to make the try/catch-block work as it's supposed to?> Also Adobe provides for free the JS or compiled file for Acrobat Reader to support the JS console.
Where is that file located ? How to install it or where to place it ?
What is the method referred by try67 on his site where he sells a product ?
Is that the same as the compiled file you refer to ? or did he sell his solution to adobe ?
It is helpful if people can get an idea of the nature of choices available and make informed decisions, than a cloak and dagger approach.
For some jobs that we have, I have been very frustrated by a consultant who wont even give basic info for transparent billing despite all assurances for privacy, as a result we are forced to do the job ourselves.
Dying Vet -
About the finally block of the try catch.
I know that finally block contains the code that will be executed in any condition of the try catch.
However, I think it is unneccessary, since the stack after the try catch stack will be executed any way.
Any one can help?
for example
try{
System.in.read();
catch(Exception e){}
finally
{ System.out.println("does this matter?");}and
try{
System.in.read();
catch(Exception e){}
System.out.println("does this matter?");However, I think it is unneccessary, since the stackafter the try catch
stack will be executed any way.That does assume that you catch and handle the error
appropriately.
Of course this is valid as well, and demonstrates
when you would WANT a finally clause.
Connection con = null;
Statement stmt = null;
try{
con = Database.getConnection();
stmt = con.createStatement("Select * from dual");
// maybe something throws an exception here?
finally{
if (stmt != null){
stmt.close();
if (con != null){
con.close();
The finally block here might throw a null pointer exception itself use
null!=stmt null!=stmt -
Return statement should put beyond try/catch clause??
The return statement should put beyond the try/catch clause, is that correct? Well,
I tried to put inside the try block, but it will have compile error though.
public String getValue()
String value;
try
catch(...)
return value;
please advise. thanks!!When a method returns a value, you must make sure that even if an exception is thrown and caught a value will be returned (or just throw the exception out of the method).
You can put a return clause as the last thing in the try block and another return clause after the catch block (this is where we go if we catch an exception so you probably want to return null). -
Return statement and Try Catch problem
Hi!!
I've got the next code:
public ResultSet DBSelectTeam(String query) {
try {
Statement s = con.createStatement();
ResultSet rs = s.executeQuery(query);
return rs;
} catch (Exception err) {
JOptionPane.showMessageDialog(null, "ERROR: " + err);
But I need a return statement in the catch-block, but I don't know what's the best option.
Help...
Many thanks.The error message is: "missing return statement", Yes, I know.
You have to either return from the catch statement, or throw from the catch statement, or return or throw after the catch statement.
The only ways your method is allowed to complete is by returning a value or throwing an exception. As it stands, if an exception is thrown, you catch it, but then you don't throw anything and you don't return a value.
So, like I said: What would you return from within or after catch? There's no good value to return. The only remotely reasonable choice would be null, but that sucks because now the caller has to explicitly check for it.
So we conclude that catch shouldn't return anything. So catch must throw something. But what? You could wrap the SQLE in your own exception, but since the caller is dealing with JDBC constructs anyway (he has to handle the RS and close it and the Statement), there's no point in abstracting JDBC away. Plus he has to deal with SQLE anyway in his use of the RS and Statement. So you might as well just throw SQLE.
So since you're going to just throw SQLE anyway, just get rid of the try/catch altogether and declare your method throws SQLException -
How to accept 2 strings in a class with try catch method..help!!
the program below will accept two strings and compare str1 and str2 if equal. this program uses functions. can any one help me with this?
import java.io.*;
public class StrCompare {
private BufferedReader takyoin = null;
//private BufferedReader intakyo = null;
* @param args
public StrCompare(){
takyoin = new BufferedReader(new InputStreamReader(System.in));
//intakyo = new BufferedReader(new InputStreamReader(System.in));
public String UserInput(){
public static void main(String[] args) {
// TODO Auto-generated method stub
}What are you talking about? There is no such thing as "try-catch-methods", and there are no functions but methods.
Strings by the way have their own means of comparision. Apart from that: do your own homework. -
Try/catch and 'cannot resolve symbol'
I am relatively new to java programming and something has me puzzled...
Why do I get a 'cannot resolve symbol' message when I include a variable definition in a try/catch section. When I put it/them before the 'try' statement it compiles as expected. How are statements inside a try compiled differently than those outside?
try {
StringBuffer pageBuffer = new StringBuffer();
String inputLine;
BufferedReader in = new BufferedReader(
new InputStreamReader( theURL.openStream() ) );
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
pageBuffer.append(inputLine);
in.close();
} catch (Exception ignored) {}C:\Projects\WebExplorer\PageVisitor.java:142: cannot resolve symbol
symbol : variable pageBuffer
location: class PageVisitor
return pageBuffer.toString();
PaulA try block is just like any other block delimited by {...} in that all variables declared inside it are local to that block. I.e. they are not visible or usable anywhere outside it. Your pageBuffer variable, for example, is a local variable that can only be used inside the try-block in which it is declared.
Your obvious solution, knowing that, is to declare the variables outside the try and catch blocks. Remember to initialize them (even to null), otherwise the compiler will complain about variables that may not have been initialized.
Maybe you are looking for
-
How do I move music files from PC to ipad?
Trying to follow the user manual, but nothing happens. No screen appears when I click Itunes on my PC
-
I have an old Sansa E250 that i used with windows. I have a new iMac and new iPod and would like to transfer that music to iTunes and then sync it to my iPod. Can it be done? I tried plugging the MP3 player in but the iMac doesn't see any of the
-
Hi, I want to know which Infocubes in Business content are used for FI, CO, MM and SD typically in companies. I cannot get this realtime info from documentation..Please help. Thanks, Lalita Message was edited by: Lalita S
-
SAP ECC 6.0 extractor 0FI_GL_4 -extracting GL data in delta mode into MSSQL
Hi, Currently we are having the following need. We have to build delta interface from SAP ECC into MSSQL for G/L data. If possible, we would like to use for this standard ECC extractor: 0FI_GL_4. As far as I know this extractor is dedicated for SAP B
-
Oraclient9i.dll error in multi threaded delphi server application
I created a multi threaded server application in delphi using oracle9i and indy server components. When I run my application, I am getting an error "oraclient9i.dll" error when executing my SQL statements. I have check communication between my server