Make getCommPort() unchecked-throwable instead of returning invalid object

This commit is contained in:
hedgecrw85 2019-04-15 10:10:37 -05:00
parent 15a24d4cf6
commit 4065bdd8fe
2 changed files with 85 additions and 11 deletions

View File

@ -295,8 +295,9 @@ public final class SerialPort
*
* @param portDescriptor The desired serial port to use with this library.
* @return A SerialPort object.
* @exception SerialPortInvalidPortException If a {@link SerialPort} object cannot be created due to a logical or formatting error in the portDescriptor parameter.
*/
static public SerialPort getCommPort(String portDescriptor)
static public SerialPort getCommPort(String portDescriptor) throws SerialPortInvalidPortException
{
// Correct port descriptor, if needed
try
@ -315,21 +316,13 @@ public final class SerialPort
else if (!((new File(portDescriptor)).exists()))
portDescriptor = "/dev/" + portDescriptor.substring(portDescriptor.lastIndexOf('/')+1);
}
catch (Exception e)
{
SerialPort serialPort = new SerialPort();
serialPort.comPort = "/dev/null";
serialPort.friendlyName = "Bad Port";
serialPort.portDescription = "Bad Port";
return serialPort;
}
catch (Exception e) { throw new SerialPortInvalidPortException("Unable to create a serial port object from the invalid port descriptor: " + portDescriptor, e); }
// Create SerialPort object
// Create the SerialPort object
SerialPort serialPort = new SerialPort();
serialPort.comPort = portDescriptor;
serialPort.friendlyName = "User-Specified Port";
serialPort.portDescription = "User-Specified Port";
return serialPort;
}

View File

@ -0,0 +1,81 @@
/*
* SerialPortInvalidPortException.java
*
* Created on: Apr 15, 2019
* Last Updated on: Apr 15, 2019
* Author: Will Hedgecock
*
* Copyright (C) 2019-2019 Fazecast, Inc.
*
* This file is part of jSerialComm.
*
* jSerialComm is free software: you can redistribute it and/or modify
* it under the terms of either the Apache Software License, version 2, or
* the GNU Lesser General Public License as published by the Free Software
* Foundation, version 3 or above.
*
* jSerialComm is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of both the GNU Lesser General Public
* License and the Apache Software License along with jSerialComm. If not,
* see <http://www.gnu.org/licenses/> and <http://www.apache.org/licenses/>.
*/
package com.fazecast.jSerialComm;
/**
* This class describes a serial port invalid port exception.
*
* @author Will Hedgecock &lt;will.hedgecock@fazecast.com&gt;
* @version 2.5.1
* @see java.lang.RuntimeException
*/
public final class SerialPortInvalidPortException extends RuntimeException
{
private static final long serialVersionUID = 3420177672598538224L;
/**
* Constructs a {@link SerialPortInvalidPortException} with {@code null} as its error detail message.
*/
public SerialPortInvalidPortException()
{
super();
}
/**
* Constructs a {@link SerialPortInvalidPortException} with the specified detail message.
*
* @param message The detail message (which is saved for later retrieval by the {@link getMessage()} method).
*/
public SerialPortInvalidPortException(String message)
{
super(message);
}
/**
* Constructs a {@link SerialPortInvalidPortException} with the specified detail message and cause.
* <p>
* Note that the detail message associated with {@link cause} is <i>not</i> automatically incorporated into this exception's detail message.
*
* @param message message The detail message (which is saved for later retrieval by the {@link getMessage()} method).
* @param cause The cause (which is saved for later retrieval by the {@link getCause()} method). (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
*/
public SerialPortInvalidPortException(String message, Throwable cause)
{
super(message, cause);
}
/**
* Constructs a {@link SerialPortInvalidPortException} with the specified cause and a detail message of {@code (cause==null ? null : cause.toString()) }
* (which typically contains the class and detail message of {@code cause}). This constructor is useful for exceptions that are little more
* than wrappers for other throwables.
*
* @param cause The cause (which is saved for later retrieval by the {@link getCause()} method). (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
*/
public SerialPortInvalidPortException(Throwable cause)
{
super(cause);
}
}